孔浩Spring mvc 笔记

来源:互联网 发布:电脑魔方计时器软件 编辑:程序博客网 时间:2024/05/22 17:23

http://blog.csdn.net/estelle_belle/article/details/38425079?utm_source=tuicool&utm_medium=referral

Spring mvc 配置:

Web.xml:

[html] view plain copy
print?
  1. <?xml version=”1.0”encoding=”UTF-8”?>  
  2. <web-appxmlns:xsiweb-appxmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns=”http://java.sun.com/xml/ns/javaee”xmlns:web=“http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”id=”WebApp_ID” version=“2.5”>  
  3.          <servlet>  
  4.                    <servlet-name>hello</servlet-name>  
  5.                    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  6.                    <load-on-startup>1</load-on-startup>  
  7.          </servlet>  
  8.          <servlet-mapping>  
  9.                    <servlet-name>hello</servlet-name>  
  10.                    <url-pattern>/</url-pattern>  
  11.          </servlet-mapping>  
  12.           
  13.          <filter>  
  14.                    <filter-name>CharacterFilter</filter-name>  
  15.                    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  16.                    <init-param>  
  17.                             <param-name>encoding</param-name>  
  18.                             <param-value>UTF-8</param-value>  
  19.                    </init-param>  
  20.          </filter>  
  21.          <filter-mapping>  
  22.                    <filter-name>CharacterFilter</filter-name>  
  23.                    <url-pattern>/*</url-pattern>  
  24.          </filter-mapping>  
  25. </web-app>  
<?xml version="1.0"encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5">         <servlet>                   <servlet-name>hello</servlet-name>                   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>                   <load-on-startup>1</load-on-startup>         </servlet>         <servlet-mapping>                   <servlet-name>hello</servlet-name>                   <url-pattern>/</url-pattern>         </servlet-mapping>         <filter>                   <filter-name>CharacterFilter</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>CharacterFilter</filter-name>                   <url-pattern>/*</url-pattern>         </filter-mapping></web-app>


Hello-servlet.xml

(名称必须与web.xm文件中的servlet-name相同,放到web-inf下) 

[html] view plain copy
print?
  1. <?xml version=”1.0”encoding=”UTF-8”?>  
  2. <beansxmlnsbeansxmlns=“http://www.springframework.org/schema/beans”  
  3.          xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  4.          xmlns:context=“http://www.springframework.org/schema/context”  
  5.          xmlns:mvc=“http://www.springframework.org/schema/mvc”  
  6.          xsi:schemaLocation=”http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd  
  7.          http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd  
  8.          http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd”>  
  9.           
  10.          <context:component-scanbase-packagecontext:component-scanbase-package=“zttc.itat.controller”/>  
  11.          <mvc:annotation-driven/>  
  12.          <!–将静态文件指定到某个特殊的文件夹中统一处理 –>  
  13.          <mvc:resourceslocationmvc:resourceslocation=“/resources/” mapping=“/resources/**”/>  
  14.          <beannamebeanname=”/welcome.html”class=”zttc.itat.controller.WelcomeController”></bean>  
  15.           
  16.          <beanclassbeanclass=“org.springframework.web.servlet.view.InternalResourceViewResolver”>  
  17.                    <propertynamepropertyname=”viewClass”value=”org.springframework.web.servlet.view.JstlView”/>  
  18.                    <propertynamepropertyname=“prefix” value=“/WEB-INF/jsp/”/>  
  19.                    <propertynamepropertyname=“suffix” value=“.jsp”/>  
  20.          </bean>  
  21.           
  22.          <!–设置multipartResolver才能完成文件上传 –>  
  23.          <beanidbeanid=”multipartResolver”class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”>  
  24.                    <propertynamepropertyname=“maxUploadSize” value=“5000000”></property>  
  25.          </bean>  
  26.           
  27.          <beanidbeanid=“exceptionResolver” class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>  
  28.                    <propertynamepropertyname=“exceptionMappings”>  
  29.                             <props>  
  30.                                      <propkeypropkey=“zttc.itat.model.UserException”>error</prop>  
  31.                             </props>  
  32.                    </property>  
  33.          </bean>  
  34. </beans>  
<?xml version="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns:context="http://www.springframework.org/schema/context"         xmlns:mvc="http://www.springframework.org/schema/mvc"         xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd         http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd">         <context:component-scanbase-package="zttc.itat.controller"/>         <mvc:annotation-driven/>         <!--将静态文件指定到某个特殊的文件夹中统一处理 -->         <mvc:resourceslocation="/resources/" mapping="/resources/**"/>         <beanname="/welcome.html"class="zttc.itat.controller.WelcomeController"></bean>         <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">                   <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>                   <propertyname="prefix" value="/WEB-INF/jsp/"/>                   <propertyname="suffix" value=".jsp"/>         </bean>         <!--设置multipartResolver才能完成文件上传 -->         <beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">                   <propertyname="maxUploadSize" value="5000000"></property>         </bean>         <beanid="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">                   <propertyname="exceptionMappings">                            <props>                                     <propkey="zttc.itat.model.UserException">error</prop>                            </props>                   </property>         </bean></beans>

UserController .java

[html] view plain copy
print?
  1. @Controller  
  2. @RequestMapping(“/user”)  
  3. public class UserController {  
  4.     private Map<String, User> users = new HashMap<String, User>();  
  5.     public UserController() {  
  6.         users.put(“sdy”,new User(“sdy”,”123”,”宋冬野”,”sdy@qq.com”));  
  7.         users.put(“ldh”,new User(“ldh”,”123”,”刘德华”,”ldh@qq.com”));  
  8.         users.put(“gfc”,new User(“gfc”,”123”,”郭富城”,”gfc@qq.com”));  
  9.         users.put(“lm”,new User(“lm”,”123”,”黎明”,”lm@qq.com”));  
  10.         users.put(“zxy”,new User(“zxy”,”123”,”张学友”,”zxy@qq.com”));  
  11.     }  
  12.     //列表页面  
  13.     @RequestMapping(value = “/users”,method = RequestMethod.GET)  
  14.     public String list(Model model){  
  15.         model.addAttribute(“users”, users);  
  16.         return “user/list”;  
  17.     }  
  18.     //添加用户页面  
  19.     @RequestMapping(value = “/add”,method = RequestMethod.GET)  
  20.     public String add(Model model){  
  21.         //开启ModelDriven  
  22.         model.addAttribute(new User());  
  23.         return “user/add”;  
  24.     }  
  25.     //添加用户  
  26.     @RequestMapping(value = “/add”,method = RequestMethod.POST)  
  27.     public String add(@Validated User user,BindingResult br, @RequestParam(“attachs”)MultipartFile[] attachs, HttpServletRequest req) throws IOException {  
  28.         if(br.hasErrors()){  
  29.             //如果有错误直接调整到add视图  
  30.             return “user/add”;  
  31.         }  
  32.         //System.out.println(attach.getName() + ”,” + attach.getOriginalFilename() + ”,” + attach.getContentType());  
  33.         String realPath = req.getServletContext().getRealPath(“/resources/upload”);  
  34.         System.out.println(realPath);  
  35.         for(MultipartFile attach : attachs){  
  36.             if(attach.isEmpty()) continue;  
  37.             File f = new File(realPath + ”/” + attach.getOriginalFilename());  
  38.             FileUtils.copyInputStreamToFile(attach.getInputStream(), f);  
  39.         }  
  40.         users.put(user.getUsername(), user);  
  41.         return “redirect:users”;  
  42.     }  
  43.   
  44.     @RequestMapping(value = “/{username}”,method = RequestMethod.GET)  
  45.     public String show(@PathVariable String username, Model model){  
  46.         model.addAttribute(users.get(username));  
  47.         return “user/show”;  
  48.     }  
  49.   
  50. //    @RequestMapping(value = “/{username}”,method = RequestMethod.GET,params = “json”)  
  51. //    @ResponseBody  
  52. //    public User show(@PathVariable String username){  
  53. //        return users.get(username);  
  54. //  
  55. //    }  
  56.   
  57.     @RequestMapping(value=“/{username}”,method=RequestMethod.GET,params=“json”)  
  58.     @ResponseBody  
  59.     public User show(@PathVariable String username) {  
  60.         return users.get(username);  
  61.     }  
  62.     @RequestMapping(value = “/{username}/update”,method = RequestMethod.GET)  
  63.     public String update(@PathVariable String username, Model model){  
  64.         model.addAttribute(users.get(username));  
  65.         return “user/update”;  
  66.     }  
  67.   
  68.     @RequestMapping(value = “/{username}/update”,method = RequestMethod.POST)  
  69.     public String update(@PathVariable String username, User user, BindingResult br){  
  70.         if(br.hasErrors()){  
  71.             //如果有错误直接调整到add视图  
  72.             return “user/update”;  
  73.         }  
  74.         users.put(username, user);  
  75.         return “redirect:/user/users”;  
  76.     }  
  77.   
  78.     @RequestMapping(value = “/{username}/delete”,method = RequestMethod.GET)  
  79.     public String delete(@PathVariable String username){  
  80.         users.remove(username);  
  81.         return “redirect:/user/users”;  
  82.     }  
  83.   
  84.     @RequestMapping(value = “/login”,method = RequestMethod.POST)  
  85.     public String login(String username, String password, HttpSession session){  
  86.         if(!users.containsKey(username)){  
  87.             throw new UserException(“用户名不存在!”);  
  88.         }  
  89.         User user = users.get(username);  
  90.         if(!user.getPassword().equals(password)){  
  91.             throw new UserException(“密码错误!”);  
  92.         }  
  93.         session.setAttribute(“user”, user);  
  94.         return “redirect:/user/users”;  
  95.     }  
  96.   
  97. /*    @ExceptionHandler(value ={UserException.class})  
  98.     public String handlerException(UserException e, HttpServletRequest req){  
  99.         req.setAttribute(“e”, e);  
  100.         return “error”;  
  101.     }*/  
  102. }  
@Controller@RequestMapping("/user")public class UserController {    private Map<String, User> users = new HashMap<String, User>();    public UserController() {        users.put("sdy",new User("sdy","123","宋冬野","sdy@qq.com"));        users.put("ldh",new User("ldh","123","刘德华","ldh@qq.com"));        users.put("gfc",new User("gfc","123","郭富城","gfc@qq.com"));        users.put("lm",new User("lm","123","黎明","lm@qq.com"));        users.put("zxy",new User("zxy","123","张学友","zxy@qq.com"));    }    //列表页面    @RequestMapping(value = "/users",method = RequestMethod.GET)    public String list(Model model){        model.addAttribute("users", users);        return "user/list";    }    //添加用户页面    @RequestMapping(value = "/add",method = RequestMethod.GET)    public String add(Model model){        //开启ModelDriven        model.addAttribute(new User());        return "user/add";    }    //添加用户    @RequestMapping(value = "/add",method = RequestMethod.POST)    public String add(@Validated User user,BindingResult br, @RequestParam("attachs")MultipartFile[] attachs, HttpServletRequest req) throws IOException {        if(br.hasErrors()){            //如果有错误直接调整到add视图            return "user/add";        }        //System.out.println(attach.getName() + "," + attach.getOriginalFilename() + "," + attach.getContentType());        String realPath = req.getServletContext().getRealPath("/resources/upload");        System.out.println(realPath);        for(MultipartFile attach : attachs){            if(attach.isEmpty()) continue;            File f = new File(realPath + "/" + attach.getOriginalFilename());            FileUtils.copyInputStreamToFile(attach.getInputStream(), f);        }        users.put(user.getUsername(), user);        return "redirect:users";    }    @RequestMapping(value = "/{username}",method = RequestMethod.GET)    public String show(@PathVariable String username, Model model){        model.addAttribute(users.get(username));        return "user/show";    }//    @RequestMapping(value = "/{username}",method = RequestMethod.GET,params = "json")//    @ResponseBody//    public User show(@PathVariable String username){//        return users.get(username);////    }    @RequestMapping(value="/{username}",method=RequestMethod.GET,params="json")    @ResponseBody    public User show(@PathVariable String username) {        return users.get(username);    }    @RequestMapping(value = "/{username}/update",method = RequestMethod.GET)    public String update(@PathVariable String username, Model model){        model.addAttribute(users.get(username));        return "user/update";    }    @RequestMapping(value = "/{username}/update",method = RequestMethod.POST)    public String update(@PathVariable String username, User user, BindingResult br){        if(br.hasErrors()){            //如果有错误直接调整到add视图            return "user/update";        }        users.put(username, user);        return "redirect:/user/users";    }    @RequestMapping(value = "/{username}/delete",method = RequestMethod.GET)    public String delete(@PathVariable String username){        users.remove(username);        return "redirect:/user/users";    }    @RequestMapping(value = "/login",method = RequestMethod.POST)    public String login(String username, String password, HttpSession session){        if(!users.containsKey(username)){            throw new UserException("用户名不存在!");        }        User user = users.get(username);        if(!user.getPassword().equals(password)){            throw new UserException("密码错误!");        }        session.setAttribute("user", user);        return "redirect:/user/users";    }/*    @ExceptionHandler(value ={UserException.class})    public String handlerException(UserException e, HttpServletRequest req){        req.setAttribute("e", e);        return "error";    }*/}
 

Rest风格 

[html] view plain copy
print?
  1. /user_show?id=120  
  2. /user/120   
  3. /user_delete?id=123  
  4. /user/123/delete   
  5. /user_updateInput?id=123  
  6. /user/123/update  
  7.  /user_list  
  8. /users  
  9. /user/users   
  10. REST的风格不等于使用了REST技术  
  11. GET,POST,PUT,DELETE  
  12.  topic/23/delete  
/user_show?id=120/user/120 /user_delete?id=123/user/123/delete /user_updateInput?id=123/user/123/update /user_list/users/user/users REST的风格不等于使用了REST技术GET,POST,PUT,DELETE topic/23/delete
 

使用hibernate+spring+springmvc完整的实现一个用户管理系统

dao–>service–>controller

增加分页,增加sitemesh 

[html] view plain copy
print?
  1. /**  
  2.  * 局部异常处理,仅仅只能处理这个控制器中的异常  
  3.  */  
  4. @ExceptionHandler(value={UserException.class})  
  5. public StringhandlerException(UserException e,HttpServletRequest req) {  
  6.          req.setAttribute(“e”,e);  
  7.          return”error”;  
  8. }   
  9. 全局异常处理   
  10. <bean id=”exceptionResolver”class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>  
  11.          <propertynamepropertyname=“exceptionMappings”>  
  12.                    <props>  
  13.                             <propkeypropkey=“zttc.itat.model.UserException”>error</prop>  
  14.                    </props>  
  15.          </property>  
  16. </bean>  
/** * 局部异常处理,仅仅只能处理这个控制器中的异常 */@ExceptionHandler(value={UserException.class})public StringhandlerException(UserException e,HttpServletRequest req) {         req.setAttribute("e",e);         return"error";} 全局异常处理 <bean id="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">         <propertyname="exceptionMappings">                   <props>                            <propkey="zttc.itat.model.UserException">error</prop>                   </props>         </property></bean>

[html] view plain copy
print?
  1. <!– 将静态文件指定到某个特殊的文件夹中统一处理–>  
  2. <mvc:resourceslocationmvc:resourceslocation=“/resources/” mapping=“/resources/**”/>  
<!-- 将静态文件指定到某个特殊的文件夹中统一处理--><mvc:resourceslocation="/resources/" mapping="/resources/**"/>

Spring mvc 文文件上传

1,UserController.java 

[html] view plain copy
print?
  1. //在具体添加用户时,是post请求,就访问以下代码  
  2. @RequestMapping(value=“/add”,method=RequestMethod.POST)  
  3. public String add(@Validated Useruser,BindingResult br,@RequestParam(“attachs”)MultipartFile[]attachs,HttpServletRequest req) throws IOException {//一定要紧跟Validate之后写验证结果类  
  4.          if(br.hasErrors()){  
  5.                    //如果有错误直接跳转到add视图  
  6.                    return”user/add”;  
  7.          }  
  8.          Stringrealpath =req.getSession().getServletContext().getRealPath(“/resources/upload”);  
  9.          System.out.println(realpath);  
  10.          for(MultipartFileattach:attachs) {  
  11.                    if(attach.isEmpty())continue;  
  12.                    Filef = new File(realpath+”/”+attach.getOriginalFilename());  
  13.                    FileUtils.copyInputStreamToFile(attach.getInputStream(),f);  
  14.          }  
  15.          users.put(user.getUsername(),user);  
  16.          return”redirect:/user/users”;  
  17. }  
//在具体添加用户时,是post请求,就访问以下代码@RequestMapping(value="/add",method=RequestMethod.POST)public String add(@Validated Useruser,BindingResult br,@RequestParam("attachs")MultipartFile[]attachs,HttpServletRequest req) throws IOException {//一定要紧跟Validate之后写验证结果类         if(br.hasErrors()){                   //如果有错误直接跳转到add视图                   return"user/add";         }         Stringrealpath =req.getSession().getServletContext().getRealPath("/resources/upload");         System.out.println(realpath);         for(MultipartFileattach:attachs) {                   if(attach.isEmpty())continue;                   Filef = new File(realpath+"/"+attach.getOriginalFilename());                   FileUtils.copyInputStreamToFile(attach.getInputStream(),f);         }         users.put(user.getUsername(),user);         return"redirect:/user/users";}

2,Hello-servlet.xml

[html] view plain copy
print?
  1. <!– 设置multipartResolver才能完成文件上传–>  
  2. lt;bean id=”multipartResolver”class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”>  
  3.         <propertynamepropertyname=“maxUploadSize” value=“5000000”></property>  
  4. lt;/bean>  
 <!-- 设置multipartResolver才能完成文件上传--><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">         <propertyname="maxUploadSize" value="5000000"></property></bean>

3,jsp 

[html] view plain copy
print?
  1. <!– 此时没有写action,直接提交会提交给/add–>  
  2. <sf:form method=”post”modelAttribute=”user” enctype=“multipart/form-data”>  
  3.          Username:<sf:inputpathsf:inputpath=“username”/><sf:errorspathsf:errorspath=“username”/><br/>  
  4.          Password:<sf:passwordpathsf:passwordpath=“password”/><sf:errorspathsf:errorspath=“password”/><br/>  
  5.          Nickname:<sf:inputpathsf:inputpath=“nickname”/><br/>  
  6.          Email:<sf:inputpathsf:inputpath=“email”/><sf:errors path=“email”/><br/>  
  7.          Attach:<inputtypeinputtype=“file” name=“attachs”/><br/>         <input type=”file”name=”attachs”/><br/>    <inputtypeinputtype=“file” name=“attachs”/><br/>  
  8.          <inputtypeinputtype=“submit” value=“添加用户”/>  
  9. </sf:form>  
<!-- 此时没有写action,直接提交会提交给/add--><sf:form method="post"modelAttribute="user" enctype="multipart/form-data">         Username:<sf:inputpath="username"/><sf:errorspath="username"/><br/>         Password:<sf:passwordpath="password"/><sf:errorspath="password"/><br/>         Nickname:<sf:inputpath="nickname"/><br/>         Email:<sf:inputpath="email"/><sf:errors path="email"/><br/>         Attach:<inputtype="file" name="attachs"/><br/>         <input type="file"name="attachs"/><br/>    <inputtype="file" name="attachs"/><br/>         <inputtype="submit" value="添加用户"/></sf:form>
 

Sitemesh:

步骤:

1,  定义相应的模板文件(main.jsp)

2,  编写装饰器文件,说明哪些页面要引入模板

decorators.xml:

[html] view plain copy
print?
  1. <?xmlversionxmlversion=“1.0” encoding=“UTF-8”?>  
  2. <decoratorsdefaultdirdecoratorsdefaultdir=“/WEB-INF/decorators”>  
  3.     <!– Any urls that are excluded willnever be decorated by Sitemesh –>  
  4.     <excludes>  
  5.        <pattern>/exclude.jsp</pattern>  
  6.        <pattern>/exclude/*</pattern>  
  7.     </excludes>   
  8.     <decorator name=”main”page=”main.jsp”>  
  9.         <pattern>/*</pattern>  
  10.     </decorator>  
  11. </decorators>  
<?xmlversion="1.0" encoding="UTF-8"?><decoratorsdefaultdir="/WEB-INF/decorators">    <!-- Any urls that are excluded willnever be decorated by Sitemesh -->    <excludes>       <pattern>/exclude.jsp</pattern>       <pattern>/exclude/*</pattern>    </excludes>     <decorator name="main"page="main.jsp">        <pattern>/*</pattern>    </decorator></decorators>

3,  在web.xml中开启sitemesh的过滤器

 

[html] view plain copy
print?
  1. <filter>  
  2.          <filter-name>sitemesh</filter-name>  
  3.          <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>  
  4. </filter>  
  5. <filter-mapping>  
  6.          <filter-name>sitemesh</filter-name>  
  7.          <url-pattern>/*</url-pattern>  
  8. </filter-mapping>  
<filter>         <filter-name>sitemesh</filter-name>         <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class></filter><filter-mapping>         <filter-name>sitemesh</filter-name>         <url-pattern>/*</url-pattern></filter-mapping>

 

 

Spring mvc总结:

1,在xml中配置DispatcherServlet

2,在web-inf下配置:xxx-servlet.xml

3,异常处理分局部异常处理(handlerException方法),和全局异常处理(配置xxx-servlet:SimpleMappingExceptionResolver) 

[html] view plain copy
print?
  1. 异常处理(handlerException方法示例:   
  2. /**  
  3.  * 局部异常处理,仅仅只能处理这个控制器中的异常  
  4.  */  
  5. @ExceptionHandler(value={UserException.class})  
  6. public StringhandlerException(UserException e,HttpServletRequest req) {  
  7.          req.setAttribute(“e”,e);  
  8.          return”error”;  
  9. }  
  10.    
  11. 全局异常处理示例:  
  12. <bean id=”exceptionResolver”class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>  
  13.          <propertynamepropertyname=“exceptionMappings”>  
  14.                    <props>  
  15.                             <propkeypropkey=“zttc.itat.model.UserException”>error</prop>  
  16.                    </props>  
  17.          </property>  
  18. </bean>  
异常处理(handlerException方法示例: /** * 局部异常处理,仅仅只能处理这个控制器中的异常 */@ExceptionHandler(value={UserException.class})public StringhandlerException(UserException e,HttpServletRequest req) {         req.setAttribute("e",e);         return"error";}全局异常处理示例:<bean id="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">         <propertyname="exceptionMappings">                   <props>                            <propkey="zttc.itat.model.UserException">error</prop>                   </props>         </property></bean>

 4,页面传值到Controller可以用方法的参数直接接收,或者用@PathVariable接收:

[html] view plain copy
print?
  1. @RequestMapping(value = “/{id}”,method = RequestMethod.GET)  
  2. public Stringshow(@PathVariable int id, Model model){}  
@RequestMapping(value = "/{id}",method = RequestMethod.GET)public Stringshow(@PathVariable int id, Model model){}

5,从Controller传值到页面可以从方法参数注入session,request,或者用Model,ModelMap

6,上传文件可以直接在方法参数中加:

[html] view plain copy
print?
  1. @RequestParam(“attach”)MultipartFile    //上传一个文件,file input的名称为attach  
  2. @RequestParam(“attachs”)MultipartFile[]  //上传一组文件,file input的名称都为attachs  
@RequestParam("attach")MultipartFile    //上传一个文件,file input的名称为attach@RequestParam("attachs")MultipartFile[]  //上传一组文件,file input的名称都为attachs

Spring mvc上传文件示例: 

[html] view plain copy
print?
  1. @RequestMapping(value=“/add”,method=RequestMethod.POST)  
  2. public String add(@Validated Useruser,BindingResult br,@RequestParam(“attachs”)MultipartFile[]attachs,HttpServletRequest req) throws IOException {//一定要紧跟Validate之后写验证结果类  
  3.          if(br.hasErrors()){  
  4.                    //如果有错误直接跳转到add视图  
  5.                    return”user/add”;  
  6.          }  
  7.          Stringrealpath =req.getSession().getServletContext().getRealPath(“/resources/upload”);  
  8.          System.out.println(realpath);  
  9.          for(MultipartFileattach:attachs) {  
  10.                    if(attach.isEmpty())continue;  
  11.                    Filef = new File(realpath+”/”+attach.getOriginalFilename());  
  12.                    FileUtils.copyInputStreamToFile(attach.getInputStream(),f);  
  13.          }  
  14.          users.put(user.getUsername(),user);  
  15.          return”redirect:/user/users”;  
  16. }  
@RequestMapping(value="/add",method=RequestMethod.POST)public String add(@Validated Useruser,BindingResult br,@RequestParam("attachs")MultipartFile[]attachs,HttpServletRequest req) throws IOException {//一定要紧跟Validate之后写验证结果类         if(br.hasErrors()){                   //如果有错误直接跳转到add视图                   return"user/add";         }         Stringrealpath =req.getSession().getServletContext().getRealPath("/resources/upload");         System.out.println(realpath);         for(MultipartFileattach:attachs) {                   if(attach.isEmpty())continue;                   Filef = new File(realpath+"/"+attach.getOriginalFilename());                   FileUtils.copyInputStreamToFile(attach.getInputStream(),f);         }         users.put(user.getUsername(),user);         return"redirect:/user/users";}

 7,spring mvc方法返回json对象示例:

导入json包:jackson-all-1.9.4.jar

[html] view plain copy
print?
  1. @RequestMapping(value=“/{username}”,method=RequestMethod.GET,params=“json”)  
  2. @ResponseBody  
  3. public User show(@PathVariable Stringusername) {  
  4.          returnusers.get(username);  
  5. }  
@RequestMapping(value="/{username}",method=RequestMethod.GET,params="json")@ResponseBodypublic User show(@PathVariable Stringusername) {         returnusers.get(username);}


原创粉丝点击