springmvc学习笔记1_DispatcherServlet_HandlerMapping_HandlerAdapter_ViewResolver
2015-06-23 22:25
330 查看
参考源:
http://java.itcast.cn/news/20150512/13543033211.shtml 这是传智播客的燕青老师讲的 讲的很好 强烈推荐
springmvc 的 DispatcherServlet.properties配置文件 默认的处理器、适配器、视图解析器等
相关的类图 用pd画了下 方便理解
本文使用两种xml方式配置处理器映射器和处理器适配器 一种注解方式配置处理器映射器和处理器适配器
1、web.xml中配置springmvc的前端控制器
2、springmvc.xml 配置文件
3、三种处理器实现
TestController1--针对BeanNameUrlHandlerMapping 和 SimpleControllerHandlerAdapter
TestHttpRequestController--针对SimpleUrlHandlerMapping 和 HttpRequestHandlerAdapter
TestAnnotationController--针对@Controller 和 @RequestMapping 注解 和注解解析器 <mvc:annotation-driven>
代码分别如下
测试jsp 使用jstl
还有一些EL表达式的整理
记录学习的脚步
http://java.itcast.cn/news/20150512/13543033211.shtml 这是传智播客的燕青老师讲的 讲的很好 强烈推荐
springmvc 的 DispatcherServlet.properties配置文件 默认的处理器、适配器、视图解析器等
# Default implementation classes for DispatcherServlet's strategy interfaces. # Used as fallback when no matching beans are found in the DispatcherServlet context. # Not meant to be customized by application developers. org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\ org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\ org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\ org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\ org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\ org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
相关的类图 用pd画了下 方便理解
SpringMvc流程 * 1、前端控制器--DispatcherServlet的doDispatch方法 * 2、获取处理器映射器--mappedHandler = getHandler(processedRequest, false); * 3、获取处理器适配器--HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); * 4、处理器处理 返回ModelAndView mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); * 5、使用视图解析器进行渲染 processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException); * render(mv, request, response); * view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request); * view.render(mv.getModelInternal(), request, response); * renderMergedOutputModel(mergedModel, request, response); * exposeModelAsRequestAttributes(model, requestToExpose);
本文使用两种xml方式配置处理器映射器和处理器适配器 一种注解方式配置处理器映射器和处理器适配器
1、web.xml中配置springmvc的前端控制器
<!-- springmvc的前端控制器 --> <servlet> <servlet-name>springmvc</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> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
2、springmvc.xml 配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 配置处理器适配器 SimpleControllerHandlerAdapter-处理器需要实现Controller接口 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- HttpRequestHandlerAdapter-处理器需要实现HttpRequestHandler接口 --> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean> <!-- 配置处理器映射器 BeanNameUrlHandlerMapping-使用bean的名字进行映射 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- SimpleUrlHandlerMapping-使用bean的id和路径进行映射 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/test1.action">testController1</prop> </props> </property> </bean> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <!-- 配置视图解析器的前后缀 --> <!-- <property name="prefix" value="/WEB-INF/"></property> <property name="suffix" value=".jsp"></property> --> </bean> <!-- 配置处理器 --> <bean name="/test.action" class="com.undergrowth.controller.TestController1"></bean> <bean id="testController1" class="com.undergrowth.controller.TestHttpRequestController"></bean> <!-- 使用注解方式映射和适配处理器 --> <mvc:annotation-driven></mvc:annotation-driven> <context:component-scan base-package="com.undergrowth.controller"></context:component-scan> </beans>
3、三种处理器实现
TestController1--针对BeanNameUrlHandlerMapping 和 SimpleControllerHandlerAdapter
TestHttpRequestController--针对SimpleUrlHandlerMapping 和 HttpRequestHandlerAdapter
TestAnnotationController--针对@Controller 和 @RequestMapping 注解 和注解解析器 <mvc:annotation-driven>
代码分别如下
package com.undergrowth.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerAdapter;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.InternalResourceView;
/**
* 自定义处理器
* 实现Controller接口
* @author u1
*
* SpringMvc流程 * 1、前端控制器--DispatcherServlet的doDispatch方法 * 2、获取处理器映射器--mappedHandler = getHandler(processedRequest, false); * 3、获取处理器适配器--HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); * 4、处理器处理 返回ModelAndView mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); * 5、使用视图解析器进行渲染 processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException); * render(mv, request, response); * view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request); * view.render(mv.getModelInternal(), request, response); * renderMergedOutputModel(mergedModel, request, response); * exposeModelAsRequestAttributes(model, requestToExpose);
*/
public class TestController1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
//创建数据
List<String> list=new ArrayList<>();
list.add("qq");
list.add("ww");
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("list", list);
modelAndView.setViewName("/WEB-INF/test/test.jsp");
return modelAndView;
}
}
package com.undergrowth.controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler; /** * 实现HttpRequestHandler接口 * @author u1 * */ public class TestHttpRequestController implements HttpRequestHandler { @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // 创建数据 List<String> list = new ArrayList<>(); list.add("qq"); list.add("ww"); list.add("ee"); request.setAttribute("list", list); request.getRequestDispatcher("/WEB-INF/test/test.jsp").forward(request, response); } }
package com.undergrowth.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /** * 测试注解处理器映射器与处理器适配器 * @author u1 * */ @Controller public class TestAnnotationController { @RequestMapping("/test3.action") public ModelAndView test(){ List<String> list=new ArrayList<>(); list.add("qq"); list.add("ww"); list.add("ee"); list.add("rr"); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("list", list); modelAndView.setViewName("/WEB-INF/test/test.jsp"); return modelAndView; } }
测试jsp 使用jstl
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${list } </body> </html>
还有一些EL表达式的整理
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${list } </br> <h1>EL11个隐含对象</h1> <ul> <li>${pageContext}</li> <li>${initParam.list}</li> <li>${param.list}</li> <li>${paramValues.list}</li> <li>${header }</li> <li>${headerValues }</li> <li>${cookie }</li> <li>${pageScope.list }</li> <li>${requestScope.list }</li> <li>${sessionScope }</li> <li>${applicationScope.list }</li> </ul> <h1>EL运算符</h1> <ul> <li>${5+5 }${4-5 }</li> <li>${5*5 }${0/5 }</li> <li>${5%5 }</li> <li>${5==5 }</li> <li>${5<=5 }</li> <li>${5!=5 }</li> <li>${5>=5 }</li> <li>${5<5 }</li> <li>${(5>5) and (5<=5) }</li> <li>${(5>5) or (5<=5) }</li> <li>${not (5<=5) }</li> <li>${empty (5<=5) }</li> <li>${empty null }</li> <li>${ 4>5?true:false}</li> </ul> <h1>.(点运算符用于访问对象的特性,当访问对象时,属性需要getter)和[]运算符(用于检索数组和集合的元素)</h1> <ul> <li>${requestScope.list }</li> <li>${requestScope["list"] }</li> </ul> <h1>查看pageContext的隐含对象</h1> <ul> <li>${pageContext.out }</li> <li>${pageContext.request }</li> <li>${pageContext.response }</li> <li>${pageContext.exception }</li> <li>${pageContext.page }</li> <li>${pageContext.session }</li> <li>${pageContext.servletContext }</li> <li>${pageContext.servletConfig }</li> </ul> </body> </html>
记录学习的脚步
相关文章推荐
- Android中List循环遍历性能对比
- 家校垂直领域的微信
- 运行android项目时提示:android library projects cannot be launched
- cocos2dx-lua 在cocos2d中使用lua脚本进行开发,并介绍脚本在游戏中的详细用途
- Android关于EditText和WindowManager的一些知识
- Swift介绍
- Android客户端与服务器端交互方式总结
- [Unity3D学习]Unity代码热更新 源码下载
- [leetcode][javascript]Happy Number
- LeetCode---(42)Trapping Rain Water
- Android-SD卡的读写
- [Unity3D学习]Unity代码热更新解决方案测试结果总结
- 安装Android时 sdk manager解决方案
- ERROR: Application requires API version 22. Device API version is 19 (Android 4.4.4).
- 使用Web Interface发布Citrix XenApp/XenDesktop 7.6
- iOS编程:学习篇(二)
- ubuntu 14.10 安装android NDK
- Google《Android性能优化》学习笔记
- 微信的接口网页授权获取用户基本信息不是只有认证服务号才有
- iOS开发笔记--[__NSArrayI addObjectsFromArray:]: unrecognized selector错误