Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架还能够是 Struts 这样的 Web 框架。javascript
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。 使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架仍是 Struts 这样的 Web 框架。经过策略接口,Spring 框架是高度可配置的,并且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,因此不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。html
优势介绍java
Lifecycle for overriding binding, validation, etc.;易于同其它View框架(Titles等)无缝集成,采用IOC便于测试。jquery
它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是彻底基于mvc系统的框架,对于初学者或者想了解mvc的人来讲我以为 spring是最好的,它的实现就是教科书!第二它和tapestry同样是一个纯正的servlet系统,这也是它和tapestry相比 struts所没有的优点。并且框架自己有代码,并且看起来也不费劲比较简单能够理解。web
applicationContext.xmajax
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--<mvc:default-servlet-handler/>--> <!-- <mvc:resources mapping="/image/" location="/image/**"></mvc:resources>--> <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>--> <!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/h1.do">firstController</prop> <prop key="/h2.do">firstController</prop> </props> </property> </bean>--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/*.do" value="firstController"></entry> </map> </property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsps/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="firstController" class="cn.curry.controller.MyController"></bean> </beans>
MyControllerspring
public class MyController implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("msg", "呵呵第一个SpringMVC"); mav.setViewName("index"); return mav; }
web.xmljson
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <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:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <!--欢迎页--> <welcome-file-list> <welcome-file>/WEB-INF/jsps/index.jsp</welcome-file> </welcome-file-list> </web-app>
实例二spring-mvc
applicationContext.xml架构
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--<mvc:default-servlet-handler/>--> <!--<mvc:resources mapping="/image/" location="/image/**"></mvc:resources>--> <!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>--> <!--<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/my.do">firstController</prop> </props> </property> </bean>--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/*.do" value="firstController"></entry> </map> </property> </bean> <bean id="nameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/h1.do">doFirst</prop> <prop key="/h2.do">doSecond</prop> </props> </property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsps/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- <bean id="hi.do" class="cn.curry.controller.MyController"> <property name="supportedMethods" value="POST,GET"></property> </bean>--> <bean id="firstController" class="cn.curry.controller.MyMultiActionController"> <property name="methodNameResolver" ref="nameResolver"></property> </bean> </beans>
MyMultiActionController
package cn.curry.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Created by Curry on 2017/4/10. */ public class MyMultiActionController extends MultiActionController { public ModelAndView doFirst(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("msg", "呵呵第一个SpringMVC"); mav.setViewName("index"); return mav; } public ModelAndView doSecond(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("msg", "呵呵第二个SpringMVC"); mav.setViewName("index"); return mav; } }
实例三
application.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--<mvc:default-servlet-handler/>--> <!--<mvc:resources mapping="/image/" location="/image/**"></mvc:resources>--> <!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>--> <!--<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/my.do">firstController</prop> </props> </property> </bean>--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/*.do" value="firstController"></entry> </map> </property> </bean> <bean id="nameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/h1.do">doFirst</prop> <prop key="/h2.do">doSecond</prop> </props> </property> </bean> <!--<bean id="nameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="actionName"></property> </bean>--> <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsps/"></property> <property name="suffix" value=".jsp"></property> </bean>--> <!--<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView"> <property name="url" value="http://www.baidu.com"></property> </bean> <bean id="keke" class="org.springframework.web.servlet.view.JstlView"> <property name="url" value="/WEB-INF/jsps/index.jsp"></property> </bean>--> <bean class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="location" value="classpath:myView.xml"></property> </bean> <bean id="firstController" class="cn.curry.controller.MyMultiActionController"> <property name="methodNameResolver" ref="nameResolver"></property> </bean> </beans>
myView.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>--> <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView"> <property name="url" value="http://www.22ddkk.cn"></property> </bean> <bean id="keke" class="org.springframework.web.servlet.view.JstlView"> <property name="url" value="/WEB-INF/jsps/index.jsp"></property> </bean> </beans>
实例四
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="cn.curry"></context:component-scan> <!--<mvc:default-servlet-handler/>--> <!--<mvc:resources mapping="/image/" location="/image/**"></mvc:resources>--> <!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>--> <!--<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/my.do">firstController</prop> </props> </property> </bean>--> <!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/*.do" value="firstController"></entry> </map> </property> </bean>--> <!-- <bean id="nameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/h1.do">doFirst</prop> <prop key="/h2.do">doSecond</prop> </props> </property> </bean>--> <!--<bean id="nameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="actionName"></property> </bean>--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsps/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView"> <property name="url" value="http://www.baidu.com"></property> </bean> <bean id="keke" class="org.springframework.web.servlet.view.JstlView"> <property name="url" value="/WEB-INF/jsps/index.jsp"></property> </bean>--> <!-- <bean class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="location" value="classpath:myView.xml"></property> </bean>--> <!-- <bean id="firstController" class="MyMultiActionController"> <property name="methodNameResolver" ref="nameResolver"></property> </bean>--> </beans>
package cn.curry.entity; /** * Created by Curry on 2017/4/11. */ public class Users { private Integer uids; private String uname; private Adress adress; public Integer getUids() { return uids; } public void setUids(Integer uids) { this.uids = uids; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Adress getAdress() { return adress; } public void setAdress(Adress adress) { this.adress = adress; } }
package cn.curry.entity; /** * Created by Curry on 2017/4/11. */ public class Adress { private String adressss; public String getAdressss() { return adressss; } public void setAdressss(String adressss) { this.adressss = adressss; } }
package cn.curry.controller; import cn.curry.entity.Users; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; /** * Created by Curry on 2017/4/6. */ @Controller public class MyController { @RequestMapping(value = "/first",method = RequestMethod.POST) public String doFirst(Model model, @RequestParam(value="uname",required = false) String uname) { model.addAttribute("msg","注解SpringMVC111"); System.out.println(uname); model.addAttribute("uname",uname); return "index"; } @RequestMapping("/first2") public String doSecond(Model model,Users users) { model.addAttribute("msg","注解SpringMVC222"); System.out.println(users.getUname()); System.out.println(users.getAdress().getAdressss()); model.addAttribute("uname",users.getUname()); model.addAttribute("adressss",users.getAdress().getAdressss()); return "index"; } @RequestMapping(value = "/{name}/{age}/first",method = RequestMethod.POST) public String doThree(Model model,@PathVariable("rname") String uname ,@PathVariable String uage) { model.addAttribute("msg","注解SpringMVC111"); System.out.println(uname); model.addAttribute("uname",uname); model.addAttribute("uage",uage); return "index"; } }
package cn.curry.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Created by Curry on 2017/4/10. */ public class MyMultiActionController extends MultiActionController { public ModelAndView doFirst(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView(); //mav.addObject("msg", "呵呵第一个SpringMVC"); mav.setViewName("baidu"); return mav; } public ModelAndView doSecond(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("msg", "呵呵第二个SpringMVC"); mav.setViewName("keke"); System.out.println("hehehehe"); return mav; } }
package cn.curry.controller; import cn.curry.entity.Users; import com.alibaba.fastjson.JSON; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * Created by Curry on 2017/4/12. */ @Controller public class AjaxCpntroller { @RequestMapping(value = "/first.do") public void doFirst(HttpServletResponse response) throws Exception { Map<String,Users> map=new HashMap<String, Users>(); Users u1=new Users(); u1.setUname("开心"); u1.setUids(001); Users u2=new Users(); u2.setUname("快乐"); u2.setUids(002); map.put("01",u1); map.put("02",u2); String jsonString = JSON.toJSONString(map); System.out.println(jsonString); response.setCharacterEncoding("utf-8"); response.getWriter().write(jsonString); response.getWriter().close(); } }
package cn.curry.controller; import cn.curry.entity.Users; import com.alibaba.fastjson.JSON; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map; /** * Created by Curry on 2017/4/12. */ @Controller public class AjaxCpntrollerA { @RequestMapping(value = "/second.do",produces = "text/html;charset=utf-8") @ResponseBody public String doFirst(HttpServletResponse response) throws Exception { Map<String,Users> map=new HashMap<String, Users>(); Users u1=new Users(); u1.setUname("开心"); u1.setUids(001); Users u2=new Users(); u2.setUname("快乐"); u2.setUids(002); map.put("01",u1); map.put("02",u2); String jsonString = JSON.toJSONString(map); response.setCharacterEncoding("utf-8"); return jsonString; } }
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <html> <head> <title>添加</title> </head> <body> <h2>哈哈${msg}</h2> <h3>${uname} ${adressss}</h3> <form method="post" action="/first2"> 用户名<input name="uname"/> 地址<input name="adress.adressss"/> <input type="submit" value="提交"/> </form> <img src="image/asp.jpg"/> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <html> <head> <title>ajax</title> <script type="text/javascript" src="js/jquery-3.1.1.js"></script> <script type="text/javascript"> $(function(){ $('#btn').click(function () { $.ajax({ url:"first.do", type:"post", success:function(data){ data=eval("("+data+")"); $.each(data,function (i,dom) { alert(dom.uname+"和"+dom.uids); var li="<li>"+dom.uname+"</li>"; var li2="<li>"+dom.uids+"</li>"; $("#aa").append(li); $("#aa").append(li2); }); } }); }); }); </script> </head> <body> <input type="button" id="btn" value="提交"/> <ul id="aa"> </ul> </body> </html>