Spring Web MVC是基于MVC思想的一种快速开发MVC程序的实现.
也就是上面代码中的:
也可以不用组件扫描,用另一种配置方法:SimpleUrlHandlerMapping,这个配置文件的中的m是在Controller文件中寻找相应的方法,
Spring Web MVC 相关的开发包:
spring-core-3.2.8.RELEASE.jar spring-context-3.2.8.RELEASE.jar spring-beans-3.2.8.RELEASE.jar commoms-logging.jar jstl.jar
spring -expression-3.2.8.RELEASE.jar spring-web-3.2.8.RELEASE.jar spring-webmvc-3.2.8.RELEASE.jar standard.jar
第一步:在web.xml文件中编写主控制器DispatcherServlet:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <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:applicationContext2.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <url-pattern>*.from</url-pattern>
- </servlet-mapping>
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>utf-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- lt;/web-app>
- </pre><pre name="code" class="html">第二部:配置HandleMapping文件,<pre name="code" class="html">该文件负责将不同的请求交给不同的Controller进行处理,这里使用的是组件扫描的
- <span style="color:#ff0000;">applicationContext2.xml </span><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><?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:context="http://www.springframework.org/schema/context"
- xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
- xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
- http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
- <context:component-scan base-package="tarena.controller"/>
- <!--支持注解应用-->
- <mvc:annotation-driven/>
- <!-- 配置拦截器 -->
- <!-- <mvc:interceptors>
- <mvc:interceptor>
- <mvc:mapping path="/**"/>
- <mvc:exclude-mapping path="/login/*"/>
- <bean class="tarena.interceptor.LoginInterceptor"/>
- </mvc:interceptor>
- </mvc:interceptors>
- -->
- <!--
- <bean
- class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
- <bean
- class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
- -->
- <!-- 定义视图解析器,处理Controller返回的ModelAndView -->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/">
- </property>
- <property name="suffix" value=".jsp">
- </property>
- </bean>
- <!-- 异常处理 -->
- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionAttribute" value="ex"></property>
- <property name="exceptionMappings">
- <props>
- <prop key="java.lang.Exception">exception</prop>
- </props>
- </property>
- </bean>
- <!-- 自定义异常处理 -->
- <bean id="exceptionHandler" class="tarena.controller.MyMappingExceptionResolver"></bean>
- </beans>
也可以不用组件扫描,用另一种配置方法:SimpleUrlHandlerMapping,这个配置文件的中的m是在Controller文件中寻找相应的方法,
- 例如<a target=_blank href="http://3g.fang.com:8000/activityManage.d?m=getLotteryUserLimit">http://3g.fang.com:8000/user.d?m=getLotteryUserLimit</a>,这个url请求就是在<pre name="code" class="html">UserAction
- </pre>
- 配置文件的内容是:
- <pre name="code" class="html"><?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-2.0.xsd">
- <!-- Request Mapping -->
- <bean id="urlMapping"
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="/main.d">mainAction</prop>
- <prop key="/user.d">UserAction</prop></props>
- </property>
- </bean>
- <bean id="mainAction" class="com.soufun.wap.action.MainAction">
- <property name="methodNameResolver"><ref local="methodNameResolver"/></property>
- </bean>
- <bean id="UserAction" class="com.soufun.wap.action.UserAction">
- <property name="methodNameResolver"><ref local="methodNameResolver"/></property>
- </bean><bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
- <property name="paramName"><value>m</value></property>
- <property name="defaultMethodName"><value>execute</value></property>
- </bean>
- </beans>
- 第三步:还是以上面的第一个配置文件为主,写Controller:package tarena.controller;
- package tarena.controller;
- import javax.servlet.http.HttpServletRequest;
- //import javax.validation.Valid;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.ui.ModelMap;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.SessionAttributes;
- import tarena.bean.User;
- @Controller
- @SessionAttributes("name")
- @RequestMapping("/day01")
- public class LoginController {
- //该方法对应/login/toLogin.from
- @RequestMapping("/toLogin")
- public String toLogin(){
- return "login";//进入login.jsp页面
- }
- @RequestMapping("/login")
- public String login(HttpServletRequest request){
- //检查用户名和密码是否正确
- try {
- request.setCharacterEncoding("utf-8");
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- String name = request.getParameter("name");
- String password = request.getParameter("password");
- if("王彪".equals(name)&&"123456".equals(password)){
- return "ok";
- }else{
- return "login";
- }
- }
- @RequestMapping("/login1")
- public ModelAndView login1(User user){
- //检查用户名和密码是否正确
- Map<String,Object> dataMap = new HashMap<String,Object>();
- dataMap.put("name",user.getName());
- System.out.println(user.getName()+" "+user.getPassword());
- if("wangbiao".equals(user.getName())&&"123456".equals(user.getPassword())){
- return new ModelAndView("ok",dataMap);
- }else{
- return new ModelAndView("login");
- }
- }
- @RequestMapping("/login2")
- public String login2(@RequestParam("name")String name,
- @RequestParam("password")String password){
- //检查用户名和密码是否正确
- if("wangbiao".equals(name)&&"123456".equals(password)){
- return "ok";
- }else{
- return "login";
- }
- @RequestMapping("/login03")
- public String login( User user,BindingResult errors,ModelMap model){
- //检查用户名和密码是否正确
- String str = null;
- str.length();
- model.put("user",user);
- //判断校验是否出错误
- if(errors.hasErrors()){
- //有错误,表明用户表单输入有错误,就返回login.jsp
- return "login";
- }
- System.out.println(user.getName());
- if("wangbiao".equals(user.getName())&&"123456".equals(user.getPassword())){
- model.addAttribute("name", user.getName());
- return "ok";
- }else{
- return "login";
- }
- }
- @ExceptionHandler
- public String execute(HttpServletRequest request,Exception e){
- request.setAttribute("e", "系统繁忙,请稍后重试");
- System.out.println("系统报错为:"+e);
- return "exception2";
- }
- @ModelAttribute("name")
- public User getUser(){
- return new User();
- }
- }