常用注解
@GetMapping: 查询数据,专门处理HTTP GET请求
@PostMapping: 添加数据,专门处理HTTP POST请求
@PutMapping: 更新数据,专门处理HTTP PUT请求
@DeleteMapping: 删除数据,专门处理HTTP DELETE请求
@RequestMapping: 可以处理所有类型的HTTP请求(GET、POST、PUT、DELETE等)
springmvc 的配置
需要的pom依赖
注册war的打包类型
<packaging>war</packaging>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.30</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
添加 web.xml
创建 webapp 文件夹
Project Structure -> Facets -> Deployment Descriptors 处添加
springmvc.xml
作用: 开启注解扫描(扫描包),主要是发现 Spring(SpringMVC)中的注解
支持 @Component、@Service、@Repository、@Controller 等注解,用于自动扫描和注册 Bean
<context:component-scan base-package="com.zjh.controller"/>
支持 @RequestMapping、@PathVariable、@RequestParam 等注解,并提供了数据绑定、请求参数处理等功能。
<mvc:annotation-driven/>
作用: 配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/admin/"></property>(定义了视图名称的前缀,文件的上一级包名)
<property name="suffix" value=".jsp"></property>(定义了视图名称的后缀)
</bean>
作用: 放行静态资源
<mvc:default-servlet-handler/>
作用: 注册并定义拦截器
<mvc:interceptors>
<mvc:interceptor>
<!--设置拦截路径-->
<mvc:mapping path="/**"/>
<!--设置放行的请求路径-->
<mvc:exclude-mapping path="/showLogin"/>
<mvc:exclude-mapping path="/login1"/>
<!--设置拦截器功能类(自定义)-->
<bean class="com.zjh.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
web.xml
作用: 加载 SpringMVC 的配置文件
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化springMVC,主要目的是为了加载SpringMVC的配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--服务器启动时创建核心处理器实例-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
作用: 设置字符编码
<!-- 利用SpringMVC自己的写的过滤器设置字符集-->
<!--SpringMVC编写的过滤器,主要过滤编码-->
<!--乱码处理-->
<!--SpringMVC自带的CharacterEncodingFilter过滤器-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
作用: 初始化spring
<!--tomcat启动的时候需要先让Spring启动,采用监听器机制-->
<!-- 利用【监听器】负责启动Spring-->
<!--利用tomcat启动监听器,启动spring-->
<!--全局变量设置Spring的配置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext_*.xml</param-value>
</context-param>
<!--开启Spring【监听器】-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
springmvc 的四种跳转方式
- 请求转发页面
return “main”; - 请求转发action
return “forward:fore/ffore.jsp”; - 重定向页面
return “redirect:admin/main.jsp”; - 重定向 action
return “redirect:/other”;
springmvc 的默认参数
public void params(
HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
Model model,
ModelMap modelMap,
Map map ) {
Student student = new Student("空", 26);
request.setAttribute("requestStu", student);
session.setAttribute("sessionStu", student);
model.addAttribute("modelStu", student);
modelMap.addAttribute("modelMapStu", student);
map.put("mapStu", student);
}
数据传递与提交
数据的传递
- formData 往后端传参数
前端是 get、delete、post、put 请求,后端接收:
(1)@RequestParam (注解一个一个字段接收)
(2)request.getParamter() (原始的servlet方法一个一个字段接收)
(3)UserQuery 对象把参数一个个映射到对象中 - {id : 1208, name : ‘张三’, phone : ‘13720202020’}
前端是 get、delete 请求,后端接收:
(1)@RequestParam
(2)request.getParamter()
(3)UserQuery 对象把参数一个个映射到对象中
前端是post、put请求,后端接收:
@RequestBody 注解接收,因为前端传过来的是 json 格式 - /api/user/12056
前端是 get、delete、post、put 请求,后端接收:
@PathVariable() 注解接收参数 - 在请求头传的参数,header 里面放了一个参数
前端是 get、delete、post、put 请求,后端接收:
@RequestHeader() 注解接收
request.getHeader() 方法接收 - 前端传过来的是文件
接收:MultipartFile
数据的提交
- 单个数据的提交
提交的参数与方法中的形参一致 - 类数据的提交
提交的参数与类中变量的参数一致 - restFul 风格的数据提交
使用 @PathVariable 解析值,只适用超链接和地址栏的数据提交 - 手工映射
提交的参数与方法中的形参不一致,使用@RequestParam注解手工映射 - 手工提取
使用 request 对象的方法提取数据,代码:
<input name="name">
<input name="age">
public void five(HttpServletRequest request){
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
}