SpringMVC

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

SpringMVC

Spring集成web环境

集成步骤


  • 导入相关的坐标,spring的和web的
    1.   <dependencies>
    2.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  
    3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    4.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>org.springframework</groupId>
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>spring-context</artifactId>
    6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>5.3.6</version>
    7.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    8.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    9.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  
    10.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>mysql</groupId>
    11.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>mysql-connector-java</artifactId>
    12.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>5.1.32</version>
    13.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    14.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
    15.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    16.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>c3p0</groupId>
    17.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>c3p0</artifactId>
    18.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>0.9.1.2</version>
    19.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    20.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
    21.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    22.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>cn.6tail</groupId>
    23.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>nlf-mini-plugin-druid</artifactId>
    24.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>1.0.0</version>
    25.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    26.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  
    27.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    28.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>junit</groupId>
    29.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>junit</artifactId>
    30.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>4.12</version>
    31.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <scope>test</scope>
    32.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    33.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
    34.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    35.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>org.springframework</groupId>
    36.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>spring-test</artifactId>
    37.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>5.3.6</version>
    38.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    39.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    40.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>org.junit.jupiter</groupId>
    41.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>junit-jupiter</artifactId>
    42.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>RELEASE</version>
    43.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <scope>compile</scope>
    44.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    45.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    46.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>junit</groupId>
    47.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>junit</artifactId>
    48.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>RELEASE</version>
    49.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <scope>compile</scope>
    50.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    51.    
    52.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    53.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>javax.servlet</groupId>
    54.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>javax.servlet-api</artifactId>
    55.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>4.0.1</version>
    56.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    57.    
    58.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    59.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>javax.servlet.jsp</groupId>
    60.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>javax.servlet.jsp-api</artifactId>
    61.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>2.3.3</version>
    62.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    63.   </dependencies>
    复制代码
  • spring相关配置
  • 添加一个web包,用来写javaweb
  • 在web.xml配置相关类
  • 配置tomcat,部署项目运行
ApplicationContext应用上下文的获取方式

之前每次我们都是通过new的方式创建的应用上下文,这样的弊端是在大项目中配置文件会加载多次,应用上下文被创建多次,繁琐且不节省资源
所以我们运用监听器来只创建一次,所有的用这一个容器,所以:

创建一个实现ServletContext监听器的类:
  1. public class ContextLoader implements ServletContextListener {
  2.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@Override
  3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void contextInitialized(ServletContextEvent sce) {
  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"/>ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
  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"/>//将这个应用上下文对象存储在servletContext域中
  6.     <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();
  7.     <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);
  8.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
  9.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@Override
  10.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public void contextDestroyed(ServletContextEvent sce) {
  11.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
  12. }
复制代码
web层中:
  1.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.     <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();
  3.     <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");
  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"/>UserService userService= app.getBean(UserService.class);
  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"/>userService.save();
  6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
复制代码
web.xml:
  1. <listener>
  2.   <listener-class>com.myspring.listener.ContextLoader</listener-class>
  3. </listener>
  4.   <context-param>
  5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><param-name>contextConfigLocation</param-name>
  6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><param-value>classpath:applicationContext.xml</param-value>
  7.   </context-param>
复制代码
Spring提供的获得应用上下文的工具

没错,上面又白写了。。。
上面的不用手动实现。Spring提供了一个监听器ContextLoaderListener就是对该功能的封装
我们只需要做两件事:

  • 在web.xml中配置ContextLoaderListener监听器(需要先导入spring-web坐标)
    pom.xml:
    1.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    2.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>org.springframework</groupId>
    3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>spring-web</artifactId>
    4.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>5.3.6</version>
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    复制代码
    web.xml:
    1. <listener>
    2.   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    3. </listener>
    复制代码
  • 通过WebApplicationCintextUtils(一个客户端工具)获得应用上下文对象ApplicationContext
    web层中:
    1. @Override
    2. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>ServletContext servletContext = req.getServletContext();
    4. //关键
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>UserService userService= app.getBean(UserService.class);
    7.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>userService.save();
    8. }
    复制代码
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
    1.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><dependency>
    2.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <groupId>org.springframework</groupId>
    3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <artifactId>spring-webmvc</artifactId>
    4.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <version>5.3.6</version>
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></dependency>
    复制代码
  • 配置servlet在web.xml
    1.   <servlet>
    2.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-name>DispatcherServlet</servlet-name>
    3.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    4.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><init-param>
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <param-name>contextConfigLocation</param-name>
    6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>  <param-value>classpath:spring-mvc.xml</param-value>
    7.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/></init-param>
    8.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><load-on-startup></load-on-startup>
    9.   </servlet>
    10.   <servlet-mapping>
    11.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><servlet-name>DispatcherServlet</servlet-name>
    12.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/><url-pattern>/</url-pattern>
    13.   </servlet-mapping>
    复制代码
  • 编写pojo(controller)
  • 将controller使用注解(@Controller)配置到Spring容器中
    1. //表明是一个控制类bean实例
    2. @Controller
    3. public class UserController {
    4.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>//地址映射,当跳转/quick,访问此方法
    5.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>@RequestMapping("/quick")
    6.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>public  String save(){
    7.     <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");
    8. //    <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"/>要跳转的视图
    9.     <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";
    10.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>}
    11. }
    复制代码
  • 配置组件扫描(配置到Spring-mvc.xml:springmvc的配置文件,需要自己在resources创建)
    1.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
    复制代码
  • 发送请求测试

流程:

SpringMVC的组件解析

SpringMVC内部执行流程



SpringMVC注解解析

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

  1. @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页面
  1. return "success.jsp";
  2. //实际上本句为
  3. return "forword:success.jsp";
  4. //forword在本处意思为转发(不改变url地址访问资源),默认为forword
  5. return "redirect:/success.jsp"
  6. //redirect:代表重定向
复制代码
我们还可以在springmvc中配置视图解析器,来避免写前缀后缀
  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"/>    <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对象返回
    1.     <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"/>}
    复制代码
​        返回字符串的形式也可以传递参数:
  1.     <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中
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
  2. 这个isELIgnored="false"表示el表达式可用
  3. <html>
  4. <body>
  5. <h2>Hello World!${username}</h2>
  6. </body>
  7. </html>
复制代码
回写数据


  • 直接返回字符串
    在web阶段我们需要回写字符串直接response.getWriter().print("hello world"),在Controller直接通过参数注入response对象,但是还有更加简单的方法:返回字符串
    1. @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
    1.     <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转换工具坐标:
    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"/>  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配置文件中进行一些配置(配置处理器映射器):
  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"/>    <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"/>
复制代码
​        控制类中:
  1.     <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的配置文件中:
  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"/>    <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>注意:注解驱动对应的命名空间必须是xmlns:mvc="http://www.springframework.org/schema/mvc"其他两个不行
复制代码
SpringMVC获取请求数据

获取请求参数



  • 获取基本类型参数:直接通过参数获得:
    1. @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一致,参数值会自动映射匹配
    1. @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类中才可以
    1. 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;}
    复制代码
  1. @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:
  1. @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);}
复制代码
开放静态资源;
  1. 无法访问的js文件等静态资源是配置
  2.     <mvc:annotation-driven conversion-service="ConversionService"/><mvc:resources mapping="js/**" location="/js/"></mvc:resources><context:component-scan base-package="com.myspring.controller"/>
复制代码
这样也可以:在springmvc找不到资源是交给tomcat处理
  1. [/code][size=4]解决低版本tomcat请求数据为中文乱码问题[/size]
  2. 如果tomcat版本较低,当配置post请求时,数据为中文会出现乱码,所以我们通过配置过滤器来解决
  3. [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注解显示
  1. @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接口
    1. 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"/>}}
    复制代码
  • 在配置文件中声明转换器
    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"/>    <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"/>
    复制代码
  • 在中引用转换器
    1.     <mvc:annotation-driven conversion-service="ConversionService"/><context:component-scan base-package="com.myspring.controller"/>
    复制代码
    结果:


获得Servlet的相关API

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

获取请求头


  • 使用@RequestHeader
    1.     <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的值:

  1.     <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坐标
    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"/>  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"/>
    复制代码
  • 配置文件上传解析器
    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"/>    <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"/>
    复制代码
  • 编写文件上传代码
    1.     <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"
多文件上传同理:
  1.     <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"/>}
复制代码
当然也可以把参数换成一个数组

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表