-
主要组件
-
DispactherServlet
作用:主控制器,用于接收客户端请求,进行业务分发处理
-
HandlerMapping
作用:维护请求和Controller业务控制器方法映射关系
SimpleUrlHandlerMapping:维护一个<props>列表
RequestMappingHandlerMapping:利用@RequestMapping("请求") -
Controller
作用:业务控制器,用于调用模型M组件处理请求
-
ViewResolver
作用:视图解析器,用于生成视图响应结果(响应HTML、JSON数据等等)
InternalResourceViewResolver:可以调用JSP或HTML视图组件。
-
-
主要流程
请求-->主控制器DispatcherServlet-->RequestMappingHandlerMapping -->Controller组件-->ViewResolver-->JSP解析成HTML-->响应输出
Spring Web MVC应用
-
环境搭建
引入jar包和配置文件
2.编写流程缺失组件
-
JSP视图组件 涉及技术:JSP、EL、JSTL、前端技术
-
Controller组件 涉及规则:如何获取请求参数、如何向响应JSP传值、如何使用Session、如何重定向等
public classLoginController{ public ModelAndView/String xxx(); }
Interceptor拦截器
作用:拦截器可以对原有SpringMVC流程进行拦截,有3个拦截点,第一个是在Controller之前;第二个是 官网:www.fhadmin.org 在Controller之后ViewResolver之前;第三个是在JSP解析之后,结果输出之前.
拦截器在实际应用时可以在上述3个点插入额外功能,便于功能重用、灵活性(配置)。
-
使用规则
-
编写拦截器实现类,实现HandlerInterceptor接口
public classCheckLoginInterceptorimplementsHandlerInterceptor{ //在请求处理完毕后,响应输出之前执行官网:www.fhadmin.org publicvoidafterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception { System.out.println("---执行afterCompletion方法---"+arg2); } //Controller之后执行 publicvoidpostHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception { System.out.println("---执行PostHandle方法---"+arg2); } //在Controller之前执行 publicbooleanpreHandle(HttpServletRequest request, HttpServletResponse response, Object arg2)throws Exception { System.out.println("---执行PreHandel方法---"+arg2); return true;//返回true继续执行Controller;返回false阻止Controller执行 } }
-
配置拦截器,指定拦截哪些请求
<mvc:interceptors> <mvc:interceptor> <!-- 指定拦截的请求 官网:www.fhadmin.org--> <mvc:mappingpath="/list.do"/> <!-- 指定不拦截的请求 --> <!-- <mvc:exclude-mapping path="/tologin.do"/> <mvc:exclude-mapping path="/login.do"/> --> <beanclass="com.xdl.interceptor.CheckLoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
-
-
登录检查功能
思路:在preHandle方法中追加拦截逻辑,检查session是否存在用户信息,如果存在表示登录;不存在表示未登录
publicbooleanpreHandle(HttpServletRequest request, HttpServletResponse response, Object arg2)throws Exception { System.out.println("---执行PreHandel方法---"+arg2); //检查用户是否登录 HttpSession session = request.getSession(); if(session.getAttribute("user") == null){ //未登录 response.sendRedirect("tologin.do"); return false;//返回false阻止Controller执行 } return true;//返回true继续执行Controller; }
- 权限控制设计
-
拦截器和过滤器区别
- 过滤器Filter属于Java Web;拦截器属于Spring Web MVC;
- 请求发送过来先执行过滤器Filter,然后进入框架流程再执行拦截器
- 拦截器可以访问框架内部特殊的对象元素;过滤器不行
- 拦截器一般采用反射和代理技术实现调用;Filter采用回调机制调用;
异常处理
-
全局异常处理
使用SimpleMappingExceptionResolver异常处理器。任何一个Controller请求方法出错误,都会调用该异常处理器处理。
<beanclass="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <propertyname="exceptionMappings"> <props> <propkey="java.lang.Exception">error500</prop> <!-- <prop key="异常类型">错误页面名称</prop> <prop key="java.lang.NumberFormatException">error500</prop> --> </props> </property> </bean>
-
局部异常处理
在Controller组件中使用@Exceptionhandler注解标记定义一个方法,当Contoller抛异常后会优先调用@ExcepitonHadler方法处理。
public String xxx(Exception e,...); public ModelAndView xxx(Exception e,...);
-
Controller之外异常
可以通过在web.xml追加配置
<error-page> <error-code>404</error-code> <location>/WEB-INF/error404.jsp</location> </error-page>
-
自定义异常处理器
-
编写异常处理器类
public classMyExceptionResolverimplementsHandlerExceptionResolver{ public ModelAndView resolveException( HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) { //追加异常处理逻辑官网:www.fhadmin.org } }
-
使用时,追加< bean>定义即可
<bean class="com.xdl.util.MyExceptionResolver"> </bean>
-
验证码应用
验证码意义:防止频繁提交表单。
-
案例:显示验证码(字节流响应)
image.do-->DispatcherServlet-->HandlerMapping-->ImageController-->返回一个图片流
ImageController主要代码如下:
@RequestMapping("/image.do") public void createImage(HttpServletResponse response) throws Exception{ //生成一个验证码图片 BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB); Graphics graphic = image.getGraphics();//获取画笔 //TODO 画图片字符和干扰线信息 //将图片流使用response输出 ImageIO.write(image, "jpeg", response.getOutputStream()); }
- 案例:验证码校验(JSON字符串响应)
(Ajax) checkImage.do-->DispatcherServlet-->HandlerMapping-->ImageController-->返回一个JSON字符串结果
相关推荐
这个"spring-webmvc.rar"压缩包包含了Spring Web MVC的源代码,允许开发者深入理解其内部机制,这对于学习和调试Spring应用非常有帮助。下面我们将详细探讨Spring Web MVC的关键知识点。 1. **MVC架构**:Spring ...
在本文中,我们将深入探讨Spring Web MVC Portlet的原理、配置、使用方法以及其在实际开发中的应用。 一、Spring Web MVC Portlet概述 Spring Web MVC Portlet是Spring MVC框架的扩展,它将MVC设计模式应用于...
### 深入浅出学Spring Web MVC #### 一、Spring Web MVC 概述 **Spring Web MVC** 是一种轻量级的、基于MVC(Model-View-Controller)设计模式的Web应用框架,是Spring框架的重要组成部分之一。它为开发者提供了...
《精通Spring Web MVC》 Spring Web MVC是Spring框架的核心组件之一,它为构建基于Java的Web应用程序提供了模型-...通过阅读《Mastering Spring Webmvc》及参考博文,可以深入理解Spring MVC的内部机制和最佳实践。
《深入解析Spring Web MVC框架——基于spring-webmvc.jar》 Spring Web MVC是Spring框架的核心模块之一,它为构建Web应用程序提供了强大的模型-视图-控制器(MVC)架构支持。在Java开发领域,Spring Web MVC以其...
**在 Spring Web MVC 环境下使用 Dojo** Dojo 是一个强大的 JavaScript 库,提供了丰富的 UI 组件、数据管理、异步通信等功能,...理解 Dojo 与 Spring MVC 的集成原理,能够帮助开发者更高效地开发复杂的企业级应用。
Spring Web MVC 和 Spring TX 是两个在Java开发中广泛使用的框架,它们构成了Spring框架的核心部分。Spring Web MVC 是Spring框架提供的一套用于构建Web应用程序的模型-视图-控制器(MVC)架构,而Spring TX则是...
### Spring Web MVC框架知识点概述 #### 一、Spring Web MVC框架简介 Spring Web MVC框架是Spring框架中的一个重要组成部分,主要用于构建基于Java的应用程序中的Web层。该框架围绕一个核心组件`DispatcherServlet...
Spring Web MVC 和 TX(事务管理)是Spring框架中的两个核心组件。Spring Web MVC 是Spring用于构建Web应用程序的模型-视图-控制器(MVC)框架,而TX则代表了Spring的事务管理功能。这两个组件在Java企业级开发中起...
Spring Web MVC 和 TX(事务管理)是Spring框架中的两个核心组件。Spring Web MVC 是Spring用于构建Web应用程序的模型-视图-控制器(MVC)框架,而TX则提供了声明式和编程式的事务管理功能。接下来,我们将深入探讨...
通过理解和掌握其工作原理及源代码,开发者可以更好地在现有Struts项目中引入Spring,提升应用的可维护性和扩展性。在实际开发过程中,这不仅可以降低维护成本,还能使项目更容易适应不断变化的业务需求。
标题中的"spring-webmvc-struts.jar"和"aspectjweaver.jar"是两个重要的Java库文件,它们在Java Web开发中扮演着核心角色,特别是对于基于Spring框架的应用程序。现在让我们详细了解一下这两个库以及它们在实际开发...
Spring Web MVC 和 MyBatis 是两个非常流行的Java开发框架,常用于构建企业级Web应用程序。在本实例中,它们被组合使用,与MySQL数据库协同工作,以实现一个简单的Web应用。接下来,我们将深入探讨这两个框架以及...
在这个"spring webmvc tx等源码五"的资源中,我们主要关注的是Spring的三个关键组件:Web MVC、事务管理(TX)以及AOP(面向切面编程)的织入(Weaving)。以下是对这些核心组件的详细解释。 1. **Spring Web MVC**...
在本文中,我们将探讨如何在NetBeans IDE中创建一个基于Spring Web MVC的简单应用程序。...对于初学者来说,这是一个很好的起点,可以帮助理解Spring MVC的工作原理,并逐步深入到更复杂的应用开发。
描述中提到了两个具体的版本,即"spring-webmvc-4.2.3.RELEASE.jar"和"spring-webmvc-4.2.6.RELEASE.jar"。这两个版本的差异可能在于修复的漏洞、性能优化和新功能的添加。 Spring Web MVC是Spring框架的一个模块,...
Spring Web MVC 和 Spring 的事务管理(TX)是Java企业级应用开发中的核心组件,它们为构建高效、可扩展的应用提供了强大的支持。让我们深入探讨这两个重要模块的源码,以了解其内部工作原理。 首先,Spring Web ...
总之,"spring-mvc-showcase" 是一个全面展示 Spring MVC 功能的项目,通过深入研究这个示例,开发者能够更好地理解 Spring MVC 的工作原理,掌握其核心概念和用法,从而在实际开发中更加得心应手。无论是初学者还是...
进入 "org" 文件夹,我们可以看到Spring Web MVC的核心组件和接口,这些是理解其工作原理的关键。下面是一些关键模块: 1. **org.springframework.web**: 这个包主要包含Web相关的基础类和接口,如...