02-ProjInit

1. 创建项目

  1. 创建空项目
image-20231229183950450
  1. 设置maven和lombok
image-20231229184106476
image-20231229184209934
  1. 创建maven(webapp)module => 注意选择骨架为《maven-archetype-webapp》
image-20240103194411285
  1. 补充项目结构文件夹、标记文件夹
image-20231229184524572
  1. 创建好目录后,选中目录,右击《Mark Directory as》选择对应目录类型即可
image-20231229184610064

2. web.xml

修改web.xml中的版本约束(直接生成的版本太低了)

  • 可以创建一个javaEE项目,然后复制web.xml文件中的内容即可
image-20231229172939341
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

3. 导入依赖

  • servlet-apijsp-api,在JavaEE项目关联Tomcat默认导入,可以直接使用。运行时,项目部署到Tomcat上,也可以直接使用
  • 使用级别仅仅在编码时需要
<!-- servlet、jsp依赖 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
</dependency>





 





 

4. 创建Servlet

创建普通Servlet,然后跳转至JSP

package com.listao.mvc.controller;

@WebServlet("/myServlet.do") // 1. 请求映射路径。每个servlet只能对应一个
public class MyServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 2. 请求参数需要从req获取

        // 请求转发
        req.getRequestDispatcher("first.jsp").forward(req, resp);
    }
}


 







 


1. first.jsp

<%--
  Created by IntelliJ IDEA.
  User: listao
  Date: 2023/12/29
  Time: 18:51
  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>
    This is first Jsp.
</body>
</html>

2. 配置Tomcat

  1. 添加运行的外部Tomcat环境
./img
  1. 将当前模块放入Tomcat
./img
./img
./img

3. 启动测试

image-20231229195900590

5. 创建SpringMVC

1. pom.xml

<!-- Spring核心容器包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.5</version>
</dependency>
<!-- Spring切面包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.3.5</version>
</dependency>
<!-- aop联盟包 -->
<dependency>
    <groupId>aopalliance</groupId>
    <artifactId>aopalliance</artifactId>
    <version>1.0</version>
</dependency>
<!-- druid连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
</dependency>
<!-- SpringJDBC包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.5</version>
</dependency>
<!-- Spring事务控制包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.5</version>
</dependency>
<!-- Spring-orm映射依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.3.5</version>
</dependency>
<!-- Apache Commons日志包 -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<!-- log4j2日志 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.14.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.3.5</version>
    <scope>test</scope>
</dependency>
<!-- junit5单元测试 -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.7.0</version>
    <scope>test</scope>
</dependency>
<!-- SpringMVC支持包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.5</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.5</version>
</dependency>

2. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- SpringMVC配置 -->
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 配置初始化参数,读取SpringMVC的核心配置文件 -->
        <!-- 不使用`<init-param>`,默认路径:/WEB-INF/<servlet-name>-servlet.xml -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring_mvc.xml</param-value>
        </init-param>

        <!-- 启动立即初始化servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 映射路径为
		    /:匹配所有资源,JSP除外
	        /*:全部servlet + JSP
	-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>








 
 
 
 
 
 
 
 
 
 
 
 
 
 




 
 
 
 

3. spring_mvc.xml

拓展自Spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!-- 配置Spring包扫描 -->
    <context:component-scan base-package="com.listao.mvc.controller"/>

    <!-- 配置视图解析器 -->
    <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
    <!--    <property name="prefix" value="/WEB-INF/view/"/>-->
    <!--    <property name="suffix" value=".jsp"/>-->
    <!--</bean>-->
</beans>






















 







4. log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

5. Controller

package com.listao.mvc.controller;

@Controller
public class MyCtl {

    // 返回String,表示要跳转的页面路径。换成ModelAndView也可
    @RequestMapping("/firstCtl")
    public String firstCtl(){
        System.out.println("This is firstCtl.");
        return "/first.jsp";
    }

}






 


 



image-20231229221800943

6. 常用配置

1. init-param

<!-- 配置初始化参数,读取SpringMVC的核心配置文件 -->
<!-- 不使用`<init-param>`,默认路径:/WEB-INF/<servlet-name>-servlet.xml -->
<init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:spring_mvc.xml</param-value>
</init-param>

2. 相对路径

package com.listao.mvc.controller;

@Controller
public class MyCtl {

    // 返回String,表示要跳转的页面路径。换成ModelAndView也可
    @RequestMapping("/firstCtl")
    public String firstCtl(){
        System.out.println("This is firstCtl.");

        // return相当于`req.getRequestDispatcher("first.jsp").forward(req, resp);`

        // 绝对路径
        // return "/first.jsp";

        // 相对路径
        return "first.jsp";
    }

}













 


 



3. 视图解析器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
">
    <!-- 配置Spring包扫描 -->
    <context:component-scan base-package="com.listao.mvc.controller"/>

    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>











 
 
 
 

@Controller
public class MyCtl {

    // 返回String,表示要跳转的页面路径。换成ModelAndView也可
    @RequestMapping("/firstCtl")
    public String firstCtl(){
        System.out.println("This is firstCtl.");

        // return "/WEB-INF/view/first.jsp";
        // 相对路径
        return "first";
    }
}