Spring记录之SpringMVC
2016-05-14 20:03
507 查看
Spring记录之SpringMVC
Spring的Web框架是围绕分发器(DispatcherServlet)设计的,DispatcherServlet用来将请求分发到不同的处理器,框架还包括了控制器映射(HandlerMapping),视图解析(ViewResolver),本地化,主题解析,支持文件上传运行机制
- (1)客户端向Spring发送HTTP请求
- (2)前端控制器DispatcherServlet拦截请求,并扫描控制器,适配合适的Controller来处理请求
- (3)DispatcherServlet根据HandlerMapping选择并决定将请求发送到哪个Controller。
- (4)被选定的Controller处理请求,并以ModelAndView(属性值和返回页面)的形式返回给DispatcherServlet
- (5)返回给DispatcherServlet的未必都是JSP,可能是逻辑视图。DispatcherServlet查询ViewResolver对象,解析视图。
- (6)找到对应的视图,将视图返回给客户端,否则报错。
SpringMVC特点
自由灵活适合做REST风格的URL
配置SpringMVC
(1)在web.xml配置前端控制器DispatcherServlet<!-- Processes application requests --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
(2)配置SpringMVC.xml配置文件
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory --> <resources mapping="/resources/**" location="/resources/" /> <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean>
需要文件上传时配置
<!-- Only needed because we require fileupload in the org.springframework.samples.mvc.fileupload package 名字都不能改--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
注解方式开发配置
<mvc:annotation-driven/> <context:component-scan base-package="com.spring.spring_mvc.annotation"/>
拦截器配置
<mvc:interceptors> <mvc:interceptor> <!-- 某一模块的拦截:/myPath/**, 拦截所有的请求/** --> <mvc:mapping path="/**"/> <bean class="com.spring.spring_mvc.interceptor.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
Controller编写
@Controller @RequestMapping("/news")//namespace,不同模块 public class HelloController { @RequestMapping("/say") public String say() { System.out.println(); return "index"; } @RequestMapping("/person1") public String person(Map<String,Object> map){ Person person1 = new Person("Hello",66); map.put("p",person1); return "index"; } @RequestMapping("/person2") public String person(ModelMap model){ Person person1 = new Person("Hello",66); model.addAttribute("p", person1); return "index"; } @RequestMapping("/entity/status") public ResponseEntity<String> responseEntityStatusCode() { return new ResponseEntity<String>("The String ResponseBody with custom status code (403 Forbidden)", HttpStatus.FORBIDDEN); } }
相关文章推荐
- Spring MVC的实现
- java中try catch块的使用
- XML_Java_ XML_利用Jdom(Java)解析xml文件 示例
- spring hibernate 批量插入jdbc及hibernate方法
- 在Maven项目中加载spring中的bean的配置xml文件会提示找不到解决方法
- Lock使用
- 69道Spring面试题和答案
- javaIO流
- Java入门习题(五)——内部类
- 百度之星2016B题java大数
- [原创]java WEB学习笔记06:ServletContext接口
- Spring MVC 概述
- java常用设计模式
- Java正则表达式实现${name}形式的字符串模板
- Eclipse ADT->Android Studio
- 关于java变量的初始化问题
- ssm框架学习03--springmvc和mybatis整合
- n!的实现(java)
- Java反射详解,从理论到实践
- java基础学习总结六(对象与类、类的属性与方法)