springMVC学习日志一
一、springMVC流程图省略
二、写一个简单的springmvc的demo来说明
2.1引入springMVC相关的jar包
2.2配置DispatcherServlet 在web.xml
- <servlet>
- <!-- springmvc的配置文件必须在【servlet-name】-servlet.xml -->
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- DispatcherServlet加载指定的springmvc的配置文件 -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springMVC-annotation.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
2.3配置springmvc的配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- 配置一个handlerMapping 如果自己不配置handlerMapping 会默认有一个handlerMapping
- bean:表示对于什么什么的一个类
- ctrl+shift+t:查找某个类的源码及路径
- -->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
- <!-- 注册自己的controller类 -->
- <bean name="/my.do" class="com.zhiyou100.xz.controller.MyController1"></bean>
- <!-- 配置视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/view/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
2.4创建Controller类
- public class MyController1 extends AbstractController{
- @Override
- protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
- ModelAndView mv=new ModelAndView();
- mv.setViewName("login");// /WEB-INF/view/login.jsp
- mv.addObject("username", "Hello World!");//功能类似于setAttribute 在request中
- System.out.println("====mycontroller1====");
- return mv;
- }
- }
三、springmvc的流程
- 客户发出请求。http://localhost:8080/springmvc-01/my.do
- 到达web.xml文件中 DispatcherServlet.查看是否符合url的要求
- DispatcherServlet就会查询springmvc的配置文件。找HandlerMapping. 根据bean的名称查找相对应的controller
- 找到我的MyController类。执行该类中的handleRequestInternal方法
- 根据返回的modelAndView在找springmvc配置文件中视图解析器
- 把viewName和prefix以及suffix做了一个拼接。把拼接的页面展示给客户
四、常见的HandlerMapping
4.1 BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- 配置一个handlerMapping 如果自己不配置handlerMapping 会默认有一个handlerMapping
- bean:表示对于什么什么的一个类
- ctrl+shift+t:查找某个类的源码及路径
- -->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
- <!-- 注册自己的controller类 -->
- <bean name="/my.do" class="com.zhiyou100.xz.controller.MyController1"></bean>
- <!-- 配置视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/view/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
4.2 ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller。
- <!-- 根据controller类的名字查找对应的Controller类
- 浏览器的URL中:类中除了Controller首字母大写外,其他都小写,例如myController/mycontroller1
- -->
- <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
- <!-- 注册自己的controller类 -->
- <bean class="com.zhiyou100.xz.controller.MyController1"> </bean>
4.3 SimpleUrlHandlerMapping 根据bean的id查找对应的Controller类。
- <!-- 根据id查询相应的controller类
- 这里包含了id与url地址的映射关系
- -->
- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping ">
- <property name="mappings">
- <props>
- <prop key="/a.do">my1</prop>
- <prop key="/b.do">my2</prop>
- </props>
- </property>
- </bean>
- <!-- 注册自己的controller类 -->
- <bean id="my1" class="com.zhiyou100.xz.controller.MyController1"></bean>
- <bean id="my2" class="com.zhiyou100.xz.controller.MyController2"></bean>
五、使用注解来替代配置信息
5.1 添加aop的jar包
5.2 创建Controller类
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller //等价于<bean class="com.zhiyou100.xz.controller.annotation.MyController1">
- public class MyController1 {
- @RequestMapping("/list.do") //RequestMapping:表示的就是你的访问地址
- public String list() {
- System.out.println("查询所有");
- return "login";
- }
- }
5.3 在springmvc的配置文件中配置注解(包扫描和开启注解驱动)
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
<!-- 添加注解配置时要先添加以下四个链接 -->
http://www.springframework.org/schema/context- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd
- ">
- <!-- 1. 包扫描:扫描注解所在的包 component-scan:部件扫描-->
- <context:component-scan base-package="com.zhiyou100.xz.controller.annotation"/>
- <!-- 2.开启注解驱动AnnotationHandlerMapping -->
- <mvc:annotation-driven/>
- <!-- 配置视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/view/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
六、通过springmvc来完成接受的参数
- import com.zhiyou100.xz.controller.bean.User;
- @Controller
- @RequestMapping("/user")
- public class MyController1 {
- @RequestMapping("/list.do") //RequestMapping:表示的就是你的访问地址
- public String list(String name,int age) { //参数一定要和请求的参数名相同
- System.out.println("name:"+name+";age:"+age);
- return "login";
- }
- @RequestMapping("/list2.do") //RequestMapping:表示的就是你的访问地址
- public String list(User user) { //参数一定要和请求的参数名相同
- System.out.println(user); //请求的参数名要和实体类中的属性名相同
- return "login";
- }
- }
注意:
接受参数时出现乱码。使用过滤器。(自定义的过滤器 也可以使用springmvc提供的过滤器)
1.使用springmvc提供的过滤器,在spring-web-4.2.2.RELEASE.jar下的org.springframework.web.filter.CharacterEncodingFilter.class中
在web.xml中配置过滤器
- <filter>
- <filter-name>CharacterEncodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
2.自定义的过滤器
先创建一个EncodingFilter.java
- public class EncodingFilter implements Filter{
- @Override
- public void destroy() {//过滤销毁时调用
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {//过滤功能
- request.setCharacterEncoding("utf-8");
- response.setCharacterEncoding("utf-8");
- chain.doFilter(request, response);
- }
- @Override
- public void init(FilterConfig arg0) throws ServletException {//过滤初始化时调用
- System.out.println("过滤初始化时调用");
- }
- }
在web.xml中配置过滤器
- <filter>
- <filter-name>EncodingFilter</filter-name>
- <filter-class>com.zhiyou100.filter.EncodingFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>EncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
springMVC学习日志一的更多相关文章
- springmvc学习日志四
一.回顾 1.文件上传 1.1引入fileupload的jar包 1.2在springmvc的配置文件中引入CommonsMutilpartResolver文件上传解析器 1.3在控制层在写入代码 2 ...
- springmvc学习日志三
一.文件的上传 1.首先在lib中添加相应的jar包 2.建立jsp页面,表单必须是post提交,编码必须是multipart/form-data,文件上传文本框必须起名 <body> & ...
- springmvc学习日志二
一.当接受的参数为日期类型时 1.建立jsp页面,向Controller类传入参数 1.1当传入的参数为单个时 <body> <form action="user/toDa ...
- springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springmvc学习笔记(19)-RESTful支持
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...
随机推荐
- 团队开发day10
项目整合成功,测试功能基本达到,目标完成!
- 排列组合的实现(js描述)
组合的实现 排列组合描述和公式 犹记得高中数学,组合表示C(m, n),意思为从集合m,选出n个数生成一项,总共有多少个项的可能?组合是无序的,排列是有序的.所以排列的项数量多于组合 排列A(n,m) ...
- springboot-8-企业开发
一.邮件发送 流程: mbqplwpheeyvgdjh 首先需要开启POS3/SMTP服务,这是一个邮件传输协议 点击开启 导入依赖 <!--mail--> <dependency& ...
- SpringBoot+Redis 实现消息订阅发布
什么是 Redis Redis 是一个开源的使用 ANSI C语言编写的内存数据库,它以 key-value 键值对的形式存储数据,高性能,读取速度快,也提供了持久化存储机制. Redis 通常在项目 ...
- synchronized锁机制(六)
前言 1.理解同步关键词synchronized 2.同步方法与同步代码块的区别 3.理解锁的对象this 脏读 一个常见的概念.在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的 ...
- c语言学习篇二【基础语法】
一.定义常量: 使用 #define 预处理器. 使用 const 关键字. #include <stdio.h> int main() { const int LENGTH = 10;/ ...
- C++模板封装Win32 API 动态调用
起因 花两周通读了一遍<C++ Primer>,积攒的疑惑一扫而光. 前因 利用C++11可变模板,封装调用dll导出函数 本以为已经很好用了,最近抽时间巩固下知识体系,发现自己道行不够! ...
- PC免费的小说阅读器,可提取章节
最近自己做了个小说阅读器,就是下面这个东西啦,目前仅支持Window系统: 个人喜欢在电脑.平板上等大屏幕设备上阅读小说或电子书籍.原因其一是屏幕足够大,可以选择更舒服的字体大小:其二是觉得小屏幕看字 ...
- onclick="return doAlert()" onclick="return false"
return false不是取bai消事件冒泡,而是取消"du浏览器默认行为".比如一个链接zhi<a href="http://zhidao.baidu.com& ...
- js之检测浏览器
getBrowser () { let ua = navigator.userAgent.toLocaleLowerCase() let browserType = null if (ua.match ...