SpringMVC
2020-08-18 17:58:22 70 举报
AI智能生成
SpringMVC思维导图
作者其他创作
大纲/内容
概述;
SpringMVC做web开发的框架,实际是spring框架中的一个模块。
SpringMVC的使用就是基于spring的,容器的概念,SpringMVC会创建容器 ,WebApplicationContext. SpringMVC作为容器是创建和管理控制器对象
的,使用@Controller创建控制器对象
的,使用@Controller创建控制器对象
三层和框架对应
SpringMVC---界面层,接收用户请求,显示处理结果的
Spring---业务层,处理业务逻辑的, spring创建Service,Dao,工具类等对象
MyBatis-持久层,访问数据库的,对数据增删改查
SpringMVC底层访问依然是Servlet-DispatcherServlet(中央调度器)
1 .创建WebApplicationContext对象,读取配置文件,进而创建控制器对象
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.它是一个Servlet ,要接收用户的请求,显示处理结果。
springmvc处理web请求
注解
1.@Controller:创建控制器类的对象,接收请求,处理请求。
2.@RequestMapping:请求映射,把请求绑定到一个方法,让这个方法处理请求
1.value :请求的uri地址,唯一-值
2.method :请求的方式,使用RequestMethod类的枚举值 ,例如get请求,RequestMethod.GET
接受用户提交参数
1.HttpServletRequest, HttpServletResponse ,HttpSession可以直接出现在处理器方法的参数位置
2.逐个接收参数,处理器方法的形参名和请求中参数名-样。按名称对应赋值
3.解决请求中post方式有中文乱码,使用过滤器解决问题。CharacterEncodingFilter
<!--注册声明过滤器,解决post请求乱码的问题-->
<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>
<!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<!--强制应答对象(HttpServletResponse)使用encoding编码的值-->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!--
/*:表示强制所有的请求先通过过滤器处理。
-->
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<!--强制应答对象(HttpServletResponse)使用encoding编码的值-->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!--
/*:表示强制所有的请求先通过过滤器处理。
-->
<url-pattern>/*</url-pattern>
</filter-mapping>
4.逐个接收中,请求中参数名和形参名不一样,使用@RequestParam解决问题
5.使用java对象接收请求的参数,要求请求中参数名和属性名- -样
6.springmvc处理器方法的形参还可以Map , List等集合类型,数组都可以,需要在前端页面处理好data
处理器方法的返回值:表示请求的处理结果
1.ModelAndView,表示数据和视图,对视图执行forward
2.String:表示视图的,可以逻辑名称,完整视图路径。对视图执行foward
3.void :返回值本身不能表示数据和视图,可以响应ajax请求
4.对象Object :表示数据的,响应ajax请求
5.springmvc处理器方法返回对象,转为json响应ajax步骤
1.加入处理java到json转换的工具库: jackson
2.在springmvc配置文件加入注解驱动<mvc:annotation-driven />
3.在处理器方法的上面加入@ResponseBody
url-pattren
设置中央调度器的url-pattern是"/":导致静态资源访问失败都是404,动态资源可以正常访问
第一种解决静态资源访问的方案:在springmvc的配置文件中1 ) <mvq:default-servlet-handler> 2) < mvc:annotation-driven>
原理:给程序内存中增加一个处理器对象,DefaultHttpReqeustHandler.让这个对象处理静态资源的访问。
第二种处理静态资源
使用的框架中的mvc:resources标签,由框架自己处理静态资源的访问
SSM整合开发
ssm整合有两个容器,1 ) springmvc的容器; 2 ) spring的容器
1.springmvc容器:管理controller ,视图等对象
2.spring容器: service,dao等对象
创建容器的方式
1.创建springmvc的容器对象:使用的中央调度器DispatcherServlet
2.创建spring容器对象,使用监听器ContextLoaderListener
配置文件
1.springmvc的配置文件
2.spring配置文件
3.mybatis主配置文件
4.数据库的属性配置文件
核心技术
转发和重定向
转发: forward
重定向: redirect
特点:都不和视图解析器同工作,就当项目中没有视图解析器
异常处理
框架才用的是全局异常处理方式,把异常集中到一个位置处理
1.@ControllerAdvice:放在类上面,表示此类是给控制器类增加异常处理的
2. @ ExcetionHandler:放在方法的上面,表示此方法那能够处理异常
拦截器
拦截用户的请求,可以截断请求
定义步骤
1.创建类实现HandlerInterceptor,里面有三个方法
2.在springmvc的配置文件,声明拦截器对象
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.bjpowernode.handler.MyInterceptor2" />
</mvc:interceptor>
</mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.bjpowernode.handler.MyInterceptor2" />
</mvc:interceptor>
</mvc:interceptors>
重要方法
preHandle
true:请求是正确,可以通过拦截器验证,能够执行控制器方法
false :请求不能通过验证,请求被截断,不能处理
常用来做什么
1.登录验证,检查用户是否登录
2.权限管理,用户访问一个地址,通过拦截器验证用户能够执行这个操作
3.做日志记录
拦截器和过滤器区别
1.拦截器是springmvc框架中的对象,过滤器是servlet中对象
2.拦截器有三个方法,三个执行时间;过滤器就一个执行时间 ,请求之前
3.拦截器对象是springmvc容器创建的,过滤器是tomcat服务器创建的
4.拦截器是用来拦截请求的,对请求做验证的;过滤器是侧重对request , response的参数,属性做设置值的
5.拦截器对Controller的请求做拦截的;对jsp , html , CSS , js用过滤器
0 条评论
下一页