SpringMVC
Spring集成web环境
集成步骤
- 导入相关的坐标,spring的和web的
- <dependencies>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>org.springframework</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>spring-context</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>5.3.6</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>mysql</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>mysql-connector-java</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>5.1.32</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>c3p0</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>c3p0</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>0.9.1.2</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>cn.6tail</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>nlf-mini-plugin-druid</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>1.0.0</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>junit</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>junit</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>4.12</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <scope>test</scope>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>org.springframework</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>spring-test</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>5.3.6</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>org.junit.jupiter</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>junit-jupiter</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>RELEASE</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <scope>compile</scope>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>junit</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>junit</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>RELEASE</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <scope>compile</scope>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
-
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>javax.servlet</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>javax.servlet-api</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>4.0.1</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
-
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>javax.servlet.jsp</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>javax.servlet.jsp-api</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>2.3.3</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
- </dependencies>
复制代码 - spring相关配置
- 添加一个web包,用来写javaweb
- 在web.xml配置相关类
- 配置tomcat,部署项目运行
ApplicationContext应用上下文的获取方式
之前每次我们都是通过new的方式创建的应用上下文,这样的弊端是在大项目中配置文件会加载多次,应用上下文被创建多次,繁琐且不节省资源
所以我们运用监听器来只创建一次,所有的用这一个容器,所以:

创建一个实现ServletContext监听器的类:- public class ContextLoader implements ServletContextListener {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@Override
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void contextInitialized(ServletContextEvent sce) {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//将这个应用上下文对象存储在servletContext域中
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ServletContext servletContext = sce.getServletContext();
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>servletContext.setAttribute("app",app);
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@Override
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void contextDestroyed(ServletContextEvent sce) {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
- }
复制代码 web层中:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ServletContext servletContext = req.getServletContext();
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ApplicationContext app = (ApplicationContext) servletContext.getAttribute("app");
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UserService userService= app.getBean(UserService.class);
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.save();
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 web.xml:- <listener>
- <listener-class>com.myspring.listener.ContextLoader</listener-class>
- </listener>
- <context-param>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><param-name>contextConfigLocation</param-name>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><param-value>classpath:applicationContext.xml</param-value>
- </context-param>
复制代码 Spring提供的获得应用上下文的工具
没错,上面又白写了。。。
上面的不用手动实现。Spring提供了一个监听器ContextLoaderListener就是对该功能的封装
我们只需要做两件事:
- 在web.xml中配置ContextLoaderListener监听器(需要先导入spring-web坐标)
pom.xml:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>org.springframework</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>spring-web</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>5.3.6</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
复制代码 web.xml:- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
复制代码 - 通过WebApplicationCintextUtils(一个客户端工具)获得应用上下文对象ApplicationContext
web层中:- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ServletContext servletContext = req.getServletContext();
- //关键
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UserService userService= app.getBean(UserService.class);
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.save();
- }
复制代码 SpringMVC简介
- SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow 中。 SpringMVC已经成为目前最主流的MVC框架之一。
- SpringMVC的作用:作为前端控制器,控制请求的共有行为,在传统的JavaEE技术中,只使用Servlet作为控制器,当每个功能都需要一个servlet程序相似功能也无法分开封装,另外,传统的开发模式也存在其它使用不便利的做法。
SpringMVC解决了V-C交互的问题,即V(View:视图)和C(Controller:控制器)之间的交互问题,具体表现在:用户可以通过视图将请求数据提交给服务器端的控制器,而控制器可以接收到相关数据后进行处理,最终,给予客户端某个视图,使得客户端得到响应结果。当然springMVC作为控制器还是需要servlet

SpringMVC开发步骤
- 导入SpringMVC
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <groupId>org.springframework</groupId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <artifactId>spring-webmvc</artifactId>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <version>5.3.6</version>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
复制代码 - 配置servlet在web.xml
- <servlet>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-name>DispatcherServlet</servlet-name>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><init-param>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <param-name>contextConfigLocation</param-name>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <param-value>classpath:spring-mvc.xml</param-value>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></init-param>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><load-on-startup></load-on-startup>
- </servlet>
- <servlet-mapping>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-name>DispatcherServlet</servlet-name>
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><url-pattern>/</url-pattern>
- </servlet-mapping>
复制代码 - 编写pojo(controller)
- 将controller使用注解(@Controller)配置到Spring容器中
- //表明是一个控制类bean实例
- @Controller
- public class UserController {
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//地址映射,当跳转/quick,访问此方法
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick")
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public String save(){
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println("Controller save running");
- // <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>要跳转的视图
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return "success.jsp";
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
- }
复制代码 - 配置组件扫描(配置到Spring-mvc.xml:springmvc的配置文件,需要自己在resources创建)
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 - 发送请求测试

流程:

SpringMVC的组件解析
SpringMVC内部执行流程


SpringMVC注解解析
@RequestMapping(""):地址映射
常用参数:value:就是路径
method:可以指定请求方式。值为枚举方式在RequestMethod
params:指定请求参数条件,例如:

- @Controller@RequestMapping("/user")public class UserController { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//当地址为localhost:8080/user/quick时访问该方法 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public String save(){ <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println("Controller save running");// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>要跳转的视图:localhost:8080/user/success.jsp,当前的前一级目录下的该资源(/success.jsp.就代表当前web应用下,即webapp目录下) <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return "success.jsp"; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}}
复制代码 SpringMVC配置解析
在上面的代码中,最后我们renturn了jsp页面- return "success.jsp";
- //实际上本句为
- return "forword:success.jsp";
- //forword在本处意思为转发(不改变url地址访问资源),默认为forword
- return "redirect:/success.jsp"
- //redirect:代表重定向
复制代码 我们还可以在springmvc中配置视图解析器,来避免写前缀后缀- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>这样一来我们可以这样写:return "/success"代表:/jsp/success.jsp
复制代码 总结:

SpringMVC的数据响应
SpringMVC的数据响应方式:
- 页面跳转
- 直接返回字符串
- 通过ModelAndView对象返回
- 回写数据
页面跳转
- 直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转:不多说,上面例子就是用的这种
- 通过ModelAndView对象返回
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick2") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public ModelAndView save2(){ <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ModelAndView modelAndView = new ModelAndView();// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>设置模型数据:可以在jsp中通过el表达式获得 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> modelAndView.addObject("username","lihua");// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>设置视图名称 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>modelAndView.setViewName("index.jsp"); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return modelAndView; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}//这种也可以,和上面一样只不过是springmvc为你注入了一个bean实例 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick2") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public ModelAndView save2(ModelAndView modelAndView){// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>设置模型数据 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>modelAndView.addObject("username","lihua");// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>设置视图名称 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>modelAndView.setViewName("index"); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return modelAndView; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 返回字符串的形式也可以传递参数:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public String save(Model model){ <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>model.addAttribute("username","lihua");// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>要跳转的视图 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return "success"; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}//另外代替Model,还可以传HttpServletRequest等作为参数
复制代码 在index.jsp中- <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
- 这个isELIgnored="false"表示el表达式可用
- <html>
- <body>
- <h2>Hello World!${username}</h2>
- </body>
- </html>
复制代码 回写数据
- 直接返回字符串
在web阶段我们需要回写字符串直接response.getWriter().print("hello world"),在Controller直接通过参数注入response对象,但是还有更加简单的方法:返回字符串- @RequestMapping("/quick")//告知springmvc返回的用于回写数据的字符串,不要进行页面跳转@ResponseBodypublic String save(HttpServletResponse response){ <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return "helloworld";}
复制代码 - 返回对象或集合
当我们需要传递一个对象或者集合时,可以先转成json格式字符串再return- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick")// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>还是要写这个注解,因为还是返回的字符串数据 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public String save(HttpServletResponse response) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UserServiceImpl userService = new UserServiceImpl(); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.setAge(10); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.setName("lihua");// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>使用json转换工具将对象转换为json格式字符串再返回 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ObjectMapper objectMapper = new ObjectMapper(); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>String string = objectMapper.writeValueAsString(userService); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return string;
复制代码 需要导入的json转换工具坐标:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> com.fasterxml.jackson.core <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> jackson-core <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> 2.11.4 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> com.fasterxml.jackson.core <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> jackson-databind <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> 2.11.4 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> com.fasterxml.jackson.core <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> jackson-annotations <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> 2.11.4 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 springmvc不需要我们自己来转json字符串,有更加简便的方式:
返回对象和集合。
首先需要我们在spring配置文件中进行一些配置(配置处理器映射器):- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 控制类中:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick")// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>还是要写这个注解,因为还是返回的字符串数据 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public UserServiceImpl save(HttpServletResponse response) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UserServiceImpl userService = new UserServiceImpl(); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.setAge(10); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.setName("lihua"); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return userService; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 配置太麻烦了,可以通过mvc的注解驱动代替上述配置,没错,又又又有更加简便的操作:

在springmvc的配置文件中:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>注意:注解驱动对应的命名空间必须是xmlns:mvc="http://www.springframework.org/schema/mvc"其他两个不行
复制代码 SpringMVC获取请求数据
获取请求参数

- 获取基本类型参数:直接通过参数获得:
- @RequestMapping("/quick")@ResponseBodypublic void save(String username,int age) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(username); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(age);}
复制代码 url:

结果:

- 获得pojo类型参数:pojo参数的属性名和请求参数的name一致,参数值会自动映射匹配
- @Controllerpublic class UserController { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>private int age; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>private String name;// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>还需要getter和setter <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public int getAge() { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return age; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void setAge(int age) { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>this.age = age; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public String getName() { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return name; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void setName(String name) { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>this.name = name; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void save(UserController userController) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(userController.getAge()); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(userController.getName()); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}}
复制代码 输入与结果:


- 获得数组类型参数:和基本数据类型完全一致,函数参数和请求的参数一致就可以

- 获得集合类型参数:需要被包装到一个pojo类中才可以
- public class VO { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public List getStringList() { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return stringList; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void setStringList(List stringList) { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>this.stringList = stringList; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>private List stringList;}
复制代码
- @RequestMapping("/quick")@ResponseBodypublic void save(VO vo) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(vo.getStringList());}
复制代码 当请求为Ajax可以通过指定contenttype为json格式,通过注解直接获取集合数据:
ajax:
 - @RequestMapping("/quick")@ResponseBodypublic void save(@RequestBody List userList) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(userList);}
复制代码 开放静态资源;
- 无法访问的js文件等静态资源是配置
- <mvc:annotation-driven conversion-service="ConversionService"/><mvc:resources mapping="js/**" location="/js/"></mvc:resources><context:component-scan base-package="com.myspring.controller"/>
复制代码 这样也可以:在springmvc找不到资源是交给tomcat处理- [/code][size=4]解决低版本tomcat请求数据为中文乱码问题[/size]
- 如果tomcat版本较低,当配置post请求时,数据为中文会出现乱码,所以我们通过配置过滤器来解决
- [code] CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> encoding <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UTF-8 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>CharacterEncodingFilter /*
复制代码 参数绑定注解@requestParam
当请求的参数名称和controller方法参数不一致时,就需要通过@requestParam注解显示- @RequestMapping("/quick")@ResponseBody//当我在url中输入的是namepublic void save(@RequestParam("name") String username) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(username);}
复制代码 @requestParam注解的参数:

获得Restful风格的参数
Restful是一种软件架构风格、设计风格,而不是标准,只是提供一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更加简洁,更有层次等
HTTP协议中四个表示操作方式的动词:

具体实例:

自定义类型转换器
SpringMVC实际上已经具备了一些常用的类型转换器,例如客户端提交的字符串被转换成int型进行参数设置
但是可能并不完全满足我们的需求,所以我可以自定义类型转换器:
开发步骤:
- 定义转换器实现Converter接口
- public class DataConverter implements Converter { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public Date convert(String dateStr) { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//将日期字符串转换为日期对象 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>Date date = null; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>try { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>date = format.parse(dateStr); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} catch (ParseException e) { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>e.printStackTrace(); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>} <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>return date; <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}}
复制代码 - 在配置文件中声明转换器
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 - 在中引用转换器
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 结果:


获得Servlet的相关API
前面说过,直接在相关方法参数位置注入,就不在赘述

获取请求头
- 使用@RequestHeader
 - <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>将请求头的user-agent一行赋值给参数 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void save(@RequestHeader(value = "User-Agent") String userAgent) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(userAgent); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 - @CookieValue获得Cookie的值:

- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>通过cookie的id获得cookie的值 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void save(@CookieValue(value = "JSESSIONID") String cookie) throws IOException { <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>System.out.println(cookie); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 文件上传
文件上传客户端要求:

单文件上传步骤:
- 导入fileupload和io坐标
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> commons-fileupload <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> commons-fileupload <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> 1.3.1 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> commons-io <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> commons-io <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> 2.5 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 - 配置文件上传解析器
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
复制代码 - 编写文件上传代码
- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//参数名必须与上传文件表单的各项name相同 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void save(String username, MultipartFile uploadFile) throws IOException {// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>获得文件名称 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>String originalFilename = uploadFile.getOriginalFilename();// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>保存文件到 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>uploadFile.transferTo(new File("D:\"+originalFilename));
复制代码 我在创建multipartResolver 实例时报500错误,后来发现是tomcat中没有commons-fileupload和commons-io的jar包,需要向tomcat下的lib目录手动导入上面那个两个坐标的包,另外可能jsp不识别el表达式需要在开头设置 isELIgnored="false"
多文件上传同理:- <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick") <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@ResponseBody <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//参数名必须与上传文件表单的各项name相同 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void save(String username, MultipartFile uploadFile1,MultipartFile uploadFile2) throws IOException {// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>获得文件名称 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>String originalFilename = uploadFile1.getOriginalFilename(); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>String originalFilename2 = uploadFile2.getOriginalFilename();// <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>保存文件到 <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>uploadFile2.transferTo(new File("D:\"+originalFilename)); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/> <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>uploadFile1.transferTo(new File("D:\"+originalFilename)); <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码 当然也可以把参数换成一个数组
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |