目录
所谓SpringMVC的注解式开发是指,在代码中通过对类与方法的注解,便可完成处理器在springmvc容器的注册——>注解式开发是重点。
一、新建webapp模板maven项目
二、修改项目属性和目录
默认只有src/main/webapp,其他没有,需手动添加缺失的test和java,并设置目录属性(目录变色)——>resources(两套)
java目录下,再创建一个controller包用于存放控制器——>servlet
三、修改pom.xml
(1)添加SpringMVC的依赖
(2)添加Servlet的依赖
(3)添加资源扫描resources
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dhrj.java.zsitking</groupId>
<artifactId>SpringMVCDemo01</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>SpringMVCDemo01 Maven Webapp</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- SpringMVC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.21</version>
</dependency>
<!-- servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<!-- 项目资源配置扫描 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
</project>
四、添加springmvc.xml
webapp目录下创建用于测试控制器跳转到资源,目录为“admin”,文件为“main.jsp” ,当核心控制器响应请求成功后,跳转到main.jsp,在 页面上显示文本信息“main........”
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
main.........
</body>
</html>
resources目录下,创建springmvc.xml配置文件
* 注解开发,添加包扫描
* 配置视图解析器
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- SpringMVC基于纯注解开发,必须添加包扫描 -->
<context:component-scan base-package="com.dhrj.java.zsitking.controller"/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 只需添加文件名即可跳转——>main -->
<property name="prefix" value="/admin/"/><!-- 目录前缀 -->
<property name="suffix" value=".jsp"/><!-- 文件后缀 -->
</bean>
</beans>
五、新建web.xml
删除默认旧的web.xml(版本太低),创建新的web.xml
先改个新名字,否则无法新建成功,会与旧名称重叠。——>先将生成的新web1.xml,覆盖掉旧的web.xml,再将web1.xml重名(shirt+F6)为web.xml
六、注册springMVC
在web.xml文件中注册springMVC框架——>所有的web请求都是基于servlet
(1)注册SpringMVC核心处理器——>中央控制器
(2)引用SpringMVC核心配置文件
(3)通过别名关联匹配Servlet控制器
<?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框架 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- SpringMVC配置文件固定参数名称,框架底层代码调用 -->
<param-name>contextConfigLocation</param-name>
<!-- 引入SpringMVC核心配置文件 -->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
指定拦截什么样的请求
http://localhost:8080/demo.action
${pageContext.request.contextPath}/demo.action
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
七、重建index.jsp
删除默认旧的index.jsp,重新创建index.jsp并修改。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href=${pageContext.request.contextPath}/demo.action>访问Tomcat服务器</a>
</body>
</html>
在页面中给定一个超链接,服务器请求,指向Servlet控制器webg.xml中,url-pattern设置匹配API接口后缀为action,若想交由SpringMVC的中央控制器处理的话,必须满足后缀规范的条件。
八、开发Servlet
一个普通的类,使用@Controller交由Spring容器IOC创建管理对象。
因SpringMVC的中央控制器处理的是一个普通的类,也就是被@Controller标识的普通类,且最终调用是一个普通方法,也就是普通类中的普通方法,此普通类的返回值即为响应服务器请求的数据————>综上所述,普通方法即为API接口,而普通类中,可以有多个普通方法,也就意味着可以开发多个API接口,全部都是通过中央控制器“DispatcherServlet
”来进行调度。
普通方法的规范:
(1)访问权限是public
(2)方法的返回值任意
(3)方法名称任意
(4)方法可以没有参数,如果有可是任意类型
(5)要使用@RequestMapping注解来声明一个访问的路径
@Controller //交给Spring去创建对象
public class DemoAction {
@RequestMapping(value = "/demo.action")
public String demo() {
System.out.println("demo()执行......");
return "main";
}
}
重点注意:@RequestMapping(value = "/demo.action"),必须要带上,本人亲测,不带上出现404错误,网上参考资料有的说不用带,web.xml中设置过“<url-pattern>*.action</url-pattern>”,可是我带上就能正常访问,不带就404。
目前不清楚是Spring版本问题,还是Tomcat版本问题。
九、配置Tomcat
重点说明:千万不要使用Tomcat10+版本,因为Spring框架最高支持Tomcat9及以下版本。
(1)验证重点说明
——Spring源码的Servlet
——Tomcat10+的Servlet
验证结论:当Tomcat10提供jakarta.servlet与Spring支持javax.servlet类的包路径冲突时,会发生DispatcherServlet相关的500异常错误。请务必使用Tomcat 9及其以下版本。
(2)使用Tomcat 10错误演示
(3)使用Tomcat 9演示
十、总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~