作者:行者 | 来源:互联网 | 2023-09-25 11:58
开发中实际用到的方式,是配置注解的映射器适配器。配置mvc:annotation-driven元素在3.1之后的注解的处理器映射器、适配器添加了很多的优化以及参
开发中实际用到的方式,是配置注解的映射器适配器。
>配置 mvc:annotation-driven元素
在3.1之后的注解的处理器映射器、适配器添加了很多的优化以及参数设置,所以在开发时,推荐使用3.1之后的版本。
![](https://img.php1.cn/3cd4a/189d8/978/7dbdf0f38ad53545.jpeg)
在SpringMVC中提供了一个mvc:annotation-driven元素,用于简化映射器、适配器在springmvc.xml文件中的配置。不仅可以替代上面两行的配置,而且mvc:annotation-driven的驱动类还默认加载了多个参数绑定的方法,比如json转换解析器就默认加载。所以开发时推荐使用该方式。如下所示:
![](https://img.php1.cn/3cd4a/1eebe/cd5/bcafc120671304eb.webp)
>注解开发handler
![](https://img.php1.cn/3cd4a/1eebe/cd5/086aec93f5e1e9b2.webp?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FoYVFpYW54dW4=,size_16,color_FFFFFF,t_70)
加载该Handler可以使用Spring的批量加载扫描的方式,如下所示:
![](https://img.php1.cn/3cd4a/1eebe/cd5/b428d8f746fb8d47.webp)
小结:
处理器映射器:
非注解的处理器映射器(了解)
注解的处理器映射器(掌握)
对标记@Controller注解的类,Spring容器自动加载该Bean并管理,对于该Bean中的使用@RequestMapping注解进行修饰的方法进行映射。在@RequestMapping里边定义映射的url路径。使用注解的映射器不需要在xml中配置url和Handler之间的映射关系。
处理器适配器:
非注解的处理器适配(了解)
注解的处理器适配器(掌握)
注解的适配器与注解的映射器是配对使用,也就是说注解的适配器不能使用非注解映射进行映射。
>注解配置demo
Spring-mvc配置文件:
>Handler编写:
package com.langsin.action;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.HttpRequestHandler;import com.langsin.pojo.Book;public class BookListAction implements HttpRequestHandler {&#64;Overridepublic void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 这里如果去数据库查&#xff0c;需要整合MyBatis&#xff0c;先伪造一点数据List booklist&#61;new ArrayList<>();ServletContext application&#61;req.getServletContext();String webPath&#61;application.getRealPath("/")&#43;"WEB-INF/datas/book.txt";BufferedReader reader&#61;new BufferedReader(new FileReader(webPath));String line&#61;null;while((line&#61;reader.readLine())!&#61;null){String[] datas&#61;line.split(",");Book book &#61;new Book(Integer.parseInt(datas[0]),datas[1],Double.parseDouble(datas[2]));booklist.add(book);}reader.close();req.setAttribute("booklist", booklist);//请求转发req.getRequestDispatcher("/WEB-INF/jsp/book_list.jsp").forward(req, resp);}}
>jsp页面
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8"pageEncoding&#61;"UTF-8"%>
<%&#64; taglib prefix&#61;"c" uri&#61;"http://java.sun.com/jsp/jstl/core"%>
书籍编号 | 书名 | 作者 |
---|
${book.bookId} | ${book.bookName} | ${book.price} |
测试结果&#xff1a;
![](https://img.php1.cn/3cd4a/1eebe/cd5/6c257b6ba227cc3e.webp?x-oss-process&#61;image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FoYVFpYW54dW4&#61;,size_16,color_FFFFFF,t_70)