一、springMVC流程图省略

二、写一个简单的springmvc的demo来说明

2.1引入springMVC相关的jar包

2.2配置DispatcherServlet 在web.xml

  1. <servlet>
  2. <!-- springmvc的配置文件必须在【servlet-name】-servlet.xml -->
  3. <servlet-name>springMVC</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <!-- DispatcherServlet加载指定的springmvc的配置文件 -->
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:springMVC-annotation.xml</param-value>
  9. </init-param>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>springMVC</servlet-name>
  13. <url-pattern>*.do</url-pattern>
  14. </servlet-mapping>

2.3配置springmvc的配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!-- 配置一个handlerMapping 如果自己不配置handlerMapping 会默认有一个handlerMapping
  7. bean:表示对于什么什么的一个类
  8. ctrl+shift+t:查找某个类的源码及路径
  9. -->
  10. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
  11.  
  12. <!-- 注册自己的controller类 -->
  13. <bean name="/my.do" class="com.zhiyou100.xz.controller.MyController1"></bean>
  14.  
  15. <!-- 配置视图解析器 -->
  16. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  17. <property name="prefix" value="/WEB-INF/view/"/>
  18. <property name="suffix" value=".jsp"/>
  19. </bean>
  20. </beans>

2.4创建Controller类

  1. public class MyController1 extends AbstractController{
  2.  
  3. @Override
  4. protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
  5. ModelAndView mv=new ModelAndView();
  6. mv.setViewName("login");// /WEB-INF/view/login.jsp
  7. mv.addObject("username", "Hello World!");//功能类似于setAttribute 在request中
  8. System.out.println("====mycontroller1====");
  9. return mv;
  10. }
  11.  
  12. }

三、springmvc的流程

  1. 客户发出请求。http://localhost:8080/springmvc-01/my.do
  2. 到达web.xml文件中 DispatcherServlet.查看是否符合url的要求
  3. DispatcherServlet就会查询springmvc的配置文件。找HandlerMapping.  根据bean的名称查找相对应的controller
  4. 找到我的MyController类。执行该类中的handleRequestInternal方法
  5. 根据返回的modelAndView在找springmvc配置文件中视图解析器
  6. 把viewName和prefix以及suffix做了一个拼接。把拼接的页面展示给客户

四、常见的HandlerMapping

4.1 BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!-- 配置一个handlerMapping 如果自己不配置handlerMapping 会默认有一个handlerMapping
  7. bean:表示对于什么什么的一个类
  8. ctrl+shift+t:查找某个类的源码及路径
  9. -->
  10. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
  11.  
  12. <!-- 注册自己的controller类 -->
  13. <bean name="/my.do" class="com.zhiyou100.xz.controller.MyController1"></bean>
  14.  
  15. <!-- 配置视图解析器 -->
  16. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  17. <property name="prefix" value="/WEB-INF/view/"/>
  18. <property name="suffix" value=".jsp"/>
  19. </bean>
  20. </beans>

4.2 ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller。

  1. <!-- 根据controller类的名字查找对应的Controller类
  2. 浏览器的URL中:类中除了Controller首字母大写外,其他都小写,例如myController/mycontroller1
  3. -->
  4.  
  5. <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
  6.  
  7. <!-- 注册自己的controller类 -->
  8. <bean class="com.zhiyou100.xz.controller.MyController1"> </bean>  

4.3 SimpleUrlHandlerMapping 根据bean的id查找对应的Controller类。

  1. <!-- 根据id查询相应的controller类
  2. 这里包含了id与url地址的映射关系
  3. -->
  4.  
  5. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping ">
  6. <property name="mappings">
  7. <props>
  8. <prop key="/a.do">my1</prop>
  9. <prop key="/b.do">my2</prop>
  10. </props>
  11. </property>
  12. </bean>
  13.  
  14. <!-- 注册自己的controller类 -->
  15. <bean id="my1" class="com.zhiyou100.xz.controller.MyController1"></bean>
  16. <bean id="my2" class="com.zhiyou100.xz.controller.MyController2"></bean>

五、使用注解来替代配置信息

5.1 添加aop的jar包

5.2 创建Controller类

  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3.  
  4. @Controller //等价于<bean class="com.zhiyou100.xz.controller.annotation.MyController1">
  5. public class MyController1 {
  6. @RequestMapping("/list.do") //RequestMapping:表示的就是你的访问地址
  7. public String list() {
  8. System.out.println("查询所有");
  9. return "login";
  10. }
  11.  
  12. }

5.3 在springmvc的配置文件中配置注解(包扫描和开启注解驱动)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
    <!-- 添加注解配置时要先添加以下四个链接 -->
    http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd
  9. http://www.springframework.org/schema/mvc
  10. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  11. ">
  12. <!-- 1. 包扫描:扫描注解所在的包 component-scan:部件扫描-->
  13. <context:component-scan base-package="com.zhiyou100.xz.controller.annotation"/>
  14. <!-- 2.开启注解驱动AnnotationHandlerMapping -->
  15. <mvc:annotation-driven/>
  16.  
  17. <!-- 配置视图解析器 -->
  18. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19. <property name="prefix" value="/WEB-INF/view/"/>
  20. <property name="suffix" value=".jsp"/>
  21. </bean>
  22. </beans>

六、通过springmvc来完成接受的参数

  1. import com.zhiyou100.xz.controller.bean.User;
  2.  
  3. @Controller
  4. @RequestMapping("/user")
  5. public class MyController1 {
  6. @RequestMapping("/list.do") //RequestMapping:表示的就是你的访问地址
  7. public String list(String name,int age) { //参数一定要和请求的参数名相同
  8. System.out.println("name:"+name+";age:"+age);
  9. return "login";
  10. }
  11. @RequestMapping("/list2.do") //RequestMapping:表示的就是你的访问地址
  12. public String list(User user) { //参数一定要和请求的参数名相同
  13. System.out.println(user); //请求的参数名要和实体类中的属性名相同
  14. return "login";
  15. }
  16. }

注意:

接受参数时出现乱码。使用过滤器。(自定义的过滤器 也可以使用springmvc提供的过滤器)

1.使用springmvc提供的过滤器,在spring-web-4.2.2.RELEASE.jar下的org.springframework.web.filter.CharacterEncodingFilter.class中

在web.xml中配置过滤器

  1. <filter>
  2. <filter-name>CharacterEncodingFilter</filter-name>
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>CharacterEncodingFilter</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

2.自定义的过滤器

先创建一个EncodingFilter.java

  1. public class EncodingFilter implements Filter{
  2.  
  3. @Override
  4. public void destroy() {//过滤销毁时调用
  5.  
  6. }
  7.  
  8. @Override
  9. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
  10. throws IOException, ServletException {//过滤功能
  11. request.setCharacterEncoding("utf-8");
  12. response.setCharacterEncoding("utf-8");
  13. chain.doFilter(request, response);
  14. }
  15.  
  16. @Override
  17. public void init(FilterConfig arg0) throws ServletException {//过滤初始化时调用
  18. System.out.println("过滤初始化时调用");
  19. }
  20.  
  21. }

在web.xml中配置过滤器

  1. <filter>
  2. <filter-name>EncodingFilter</filter-name>
  3. <filter-class>com.zhiyou100.filter.EncodingFilter</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>EncodingFilter</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>

springMVC学习日志一的更多相关文章

  1. springmvc学习日志四

    一.回顾 1.文件上传 1.1引入fileupload的jar包 1.2在springmvc的配置文件中引入CommonsMutilpartResolver文件上传解析器 1.3在控制层在写入代码 2 ...

  2. springmvc学习日志三

    一.文件的上传 1.首先在lib中添加相应的jar包 2.建立jsp页面,表单必须是post提交,编码必须是multipart/form-data,文件上传文本框必须起名 <body> & ...

  3. springmvc学习日志二

    一.当接受的参数为日期类型时 1.建立jsp页面,向Controller类传入参数 1.1当传入的参数为单个时 <body> <form action="user/toDa ...

  4. springmvc学习笔记--REST API的异常处理

    前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...

  5. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  6. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  7. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  8. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  9. SpringMVC学习系列-后记 解决GET请求时中文乱码的问题

    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...

随机推荐

  1. Spring boot+Mybatis+MySQL插入中文乱码

    转载:https://www.jianshu.com/p/bd0311a33c16 现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???.   mys ...

  2. [JS]闭包和词法环境

    词法环境 词法环境(lexical environment)由两个部分组成: 环境记录--一个存储所有局部变量作为其属性的对象. 对外部词法环境的引用,与外部代码相关联. 全局词法环境在脚本执行前创建 ...

  3. 【Javaweb】Cookie和Session

    会话技术 什么是会话 从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止的这段时间内容产生的多次请求和响应,合起来叫做浏览器和服务器之间的一次会话 会话管理作用 共享数据用的,并且是在不同请求间 ...

  4. Tomcat修改最大连接数及查看最大连接数

    一.背景 公司进行安全整改, 技术要求:会话限制:应能够对应用系统的最大并发会话连接数进行限制: 提供凭证:提供对系统最大并发会话连接数进行限制的截图,需要将所有被检查系统中间件配置截图,如果不限制最 ...

  5. lis分析之一一批处理(任务)如何连接数据库的

    public class ZFBCheckAccountTask extends TaskThread { } 这个类运行时候自动加载了数据库连接,不明白是如何提前加载的,开始用static { } ...

  6. Electron 开发音视频

    废话不多说,咱直接进入正题! 创建 Electron 项目 前提条件 在使用Electron进行开发之前,需要安装 Node.js. 要检查 Node.js 是否正确安装,请在您的终端输入以下命令: ...

  7. Mybatis-初见

    目录 介绍 示例 搭建环境 创建一个模块 CURD 万能Map 配置解析 环境配置 environments 属性 properties 类型别名 typeAliases 其他配置 映射器 mappe ...

  8. .Netcore HttpClient源码探究

    源码搜索与概述 搜索HttpClient源码 https://source.dot.net/#System.Net.Http/System/Net/Http/HttpClient.cs 1.HttpC ...

  9. Mol Cell | 张令强/贺福初/魏文毅/刘翠华揭示线性泛素化调控血管生成新机制

    景杰学术 | 报道 泛素化修饰作为主要的蛋白质翻译后修饰之一,与细胞周期.应激反应.信号传导和DNA损伤修复等几乎所有的生命活动密切相关[1].泛素分子通常含有7个赖氨酸残基,通过这些残基可以和其他泛 ...

  10. 【python与机器学习实战】感知机和支持向量机学习笔记(一)

    对<Python与机器学习实战>一书阅读的记录,对于一些难以理解的地方查阅了资料辅以理解并补充和记录,重新梳理一下感知机和SVM的算法原理,加深记忆. 1.感知机 感知机的基本概念 感知机 ...