SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架
Spring的官方下载网址是:http://www.springsource.org/download
转载请注明出处:原文地址:http://elf8848.iteye.com/blog/875830
(1)MVC的流程
用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式。
- M 代表 模型(Model)
模型是什么呢? 模型就是数据,就是 dao,bean - V 代表 视图(View)
视图是什么呢? 就是网页, JSP,用来展示模型中的数据 - C 代表 控制器(controller)
控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet 扮演的就是这样的角色。
图解:
(2)SpringMVC的流程
具体步骤:
1.客户发送请求到 (控制器)DispatcherServlet
2.控制器请求HandlerMapping来判断于请求匹配的Controller
3.Controller处理请求,然后来到ModelAndView
4.ModolAndView 将处理后的数据保存,然后到达ResoluteView(视图解析器)
5.ResoluteView 跳转到指定页面,并将内容返回给客户
(3)springmvc简单demo
3.1引入springmvc相关的jar包
3.2在Web.xml文件中配置DispatcherServlet
<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-annotation.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern>
3.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 class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 注册自己的controller类 --> <bean name="/my.do" class="com.zhiyou100.ydb.controller.MyController"></bean> <!--配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
3.4创建Controller 在src文件下创建包在该包下创建Controller类 并且继承AbstractController类,重写 handleRequestInternal 方法
package com.zhiyou100.ydb.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class MyController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { ModelAndView mv =new ModelAndView(); mv.setViewName("login"); mv.addObject("username", "HelloWorld"); return mv; } }
3.5测试:
1.在WEB-INF下创建一个文件夹view在创建一个login.jsp 文件,在里面随便写点东西
2.将本地网址加上注册好的controller 的name的值,一起放到网址上,查看网页是否会显示自己随便写的内容
(4)常见的HandlerMapping
4.1 SimpleU BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类(上述例子用使用的就是该HandlerMapping)
4.2 rlHandlerMapping 根据bean的id查找对应的Controller类。
4.3 ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller
4.4使用注解来替代配置信息
1.额外加入aop的jar包
2.在springmvc配置文件中加入如下代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 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 "> <!-- 包扫描:扫描注解所在的包con'trollor类所在的包 --> <context:component-scan base-package="com.zhiyou100.ydb.controller.annotation"></context:component-scan> <!-- 开启注解驱动AnnotationHandlerMapping --> <mvc:annotation-driven></mvc:annotation-driven> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
3.创建Controller 包,创建Controller类 每个请求对应Controller中的一个方法
(5)通过springmvc来完成接受参数
注意:接受参数时出现乱码。使用过滤器。(自定义的过滤器 也可以使用springmvc提供的过滤器)