• IntelliJ IDEA maven项目 ***


    创建一个新Maven项目

    • new 一个project

    • 不选择任何Maven模板

    • 起个GroupId、ArifactId

    • 起个项目名。注意:Idea_Project是存放此项目的工作区间,mavenDemo_idea15为存放此项目的子目录。

    • 建好项目后,打开,点击Auto-Import

    • 下面为此项目的结构

    项目部署

    • 点击

    Project: 无需设置 (当然可点击Project complier output自定义编译目录)

    Modules:可看到此项目无任何适配服务组件(因为是手工创建Maven,没有选择任何Maven模板)--因此需要我们进行添加。

    • 选择Web(为此项目添加Web服务组件,这便是一个Web项目了)

    • 现在为Web设置资源目录。双击Web Resource Directory

    • 选择scr/main目录

    • 在后面加上webapp。好了,点OK,Web的资源目录便设置好了。

    • 现在设置Web的描述文件的目录

    • 设置在webapp目录下

    Facts: 表示当前项目的适配服务组件。可看到此项目已是一个Web项目了。

    Aftifacts: 这个Aftifacts描述了当前项目发布的信息。现在进行添加,从Modeles中选择。

    说明:

    A: 现在Artifacts已有了发布的项目了(idea中准确的说应是Modele)

    B:output root目录描述了当前项目的编译目录及适配服务。

    C:Output directory: 品库的输出目录,可以直接输出到TomCat 的webapps目录下

    确定之后当前项目的结构:

    • 如有需要,添加lib包

    部署服务器

    • 添加服务器

    • 部署

    注:很多童鞋在这里找不到Arifact,请参考部署项目中的Modules的配置。如果没有为项目配置Web服务组件,那么就没有Artifact。(当前项目连Web项目都不是,哪儿来的Artifact,又部署什么呢?)

    • 注意下面的选择:

    编写代码测试

    • 创建一个java类。可看到继承HttpServlet出问题了--这是因为没有把Tomcat的依赖加入Module

    • 在Modules加入Tomcat依赖

    添加完毕

    • 现在按快捷键就可以了

    • 代码编辑

    Java

     
    package com.wql;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * Created by Lenovo on 2016/2/25.
     */
    @WebServlet("/myController")
    public class Controller extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //        System.err.println("---");
            //解决乱码
            req.setCharacterEncoding("UTF-8");
            String name=req.getParameter("name");
            req.setAttribute("name",name);
            System.out.println(name);
            req.getRequestDispatcher("index.jsp").forward(req, resp);
        }
    
    }
     

    Html

     
    <%--
      Created by IntelliJ IDEA.
      User: Lenovo
      Date: 2016/2/25
      Time: 0:26
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="myController" method="post">
        <input name="name">
        return:${name}
        <input value="提交" type="submit">
    </form>
    </body>
    </html>
     

    Xml

     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
               version="3.0">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>
     
    • 记得设置默认启动浏览器

    • 启动项目

    intellij idea在运行web项目时部署的位置(tomcat)

    说明一下:这里是使用tomcat 部署成war exploded 而不是war包。

    war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

    在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。

     在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是复制三份文件到 ${user.home}/.IntelliJIdea/system/tomcat 目录下的各自项目。

    也就是说每个项目都有属于自己的一份tomcat配置,互不干扰。

    每个项目的配置文件夹中有一个 /conf/Catalina/localhost/ROOT.xml 文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="" docBase="D:	est8saas	runkSynergyWebService	argetcom.synergy.demo.war" />

    其中,path是指在访问此项目时,是否需要添加额外的路径,这个路径是在IDEA->Run/Debug Configurations->TomcatServer->Deployment->Application context配置,也就是项目上下文。

    如果现在我在Application context加上:/com.synergy.demo

    Server这边会自动加入:com.synergy.demo/

    这时候,我们运行tomcat之后,在conf/Catalina/localhost就没有ROOT.xml了,取而代之的是com.synergy.demo.xml文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/com.synergy.demo" docBase="D:	est8saas	runkSynergyWebService	argetcom.synergy.demo.war" />

    这时候项目的访问路径是:http://localhost:8080/com.synergy.demo/

    docBase是指要运行的项目的部署位置,build是由gradle构建后生成的,gradle build完成之后生成的项目

    整个项目运行过程是:

    1、首先gradle build项目,将构建结果写到项目的build目录下,然后idea复制一份tomcat的conf、logs和work文件夹到${user.home}/.IntelliJIdea/system/tomcat 中。

    2、启动tomcat安装目录下的catalina.sh文件,tomcat读取配置文件,找到项目位置,然后就运行起来了。

    如果是使用tomcat 部署成是war包。

    刚开始我将项目改为war部署的方式,但是运行之后tomcat中始终没有项目的文件。后来发现如果将当前的Application context设置为’/’,那么

    tomcat也不会将项目部署到webapps中,因为这个相当于你项目的根路径。后来经过实践,发现这个Application context就是你项目在webapps路径下项目的根目录名。 

     
  • 相关阅读:
    字符串形式导入模块
    pycharm 远程环境开发调试
    ubuntu 18.04 及初始化python3环境
    nbu备份虚拟机
    转载
    linux/centos/rhel同时安装oracle10g和11g
    多进程
    drf笔记
    单例模式
    常用模块
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9814956.html
Copyright © 2020-2023  润新知