spring mvc & velocity 配置备忘

简介:

  Spring里面最重要的概念是IOC和AOP,还有两项很重要的模块是事务和MVC,对于IOC和AOP,我们要深究其源码实现,对于事务,我们务必理解。对于MVC,Spring MVC提供的功能很多、很先进,但我们一般只要用其中的一小部分就可以满足我们的开发需求,另外,我们并不建议你排斥Struts2,因为它也是经过无数公司验证过的优秀的框架。本文给出spring mvc简单配置和部分代码举例。

 

WEB-INF/web.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  6.          version="3.0"  
  7.          metadata-complete="true">  
  8.   
  9.     <display-name>ixhong-admin-web</display-name>  
  10.   
  11.     <context-param>  
  12.         <param-name>contextConfigLocation</param-name>  
  13.         <param-value>classpath:spring-context.xml</param-value>  
  14.     </context-param>  
  15.     <listener>  
  16.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  17.     </listener>  
  18.   
  19.     <filter>  
  20.         <filter-name>characterEncodingFilter</filter-name>  
  21.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  22.         <init-param>  
  23.             <param-name>encoding</param-name>  
  24.             <param-value>UTF-8</param-value>  
  25.         </init-param>  
  26.         <init-param>  
  27.             <param-name>forceEncoding</param-name>  
  28.             <param-value>true</param-value>  
  29.         </init-param>  
  30.     </filter>  
  31.   
  32.     <filter-mapping>  
  33.         <filter-name>characterEncodingFilter</filter-name>  
  34.         <url-pattern>/*</url-pattern>  
  35.     </filter-mapping>  
  36.   
  37.     <servlet>  
  38.         <servlet-name>spring-mvc</servlet-name>  
  39.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  40.         <init-param>  
  41.             <param-name>contextConfigLocation</param-name>  
  42.             <param-value>classpath:spring-velocity.xml</param-value>  
  43.         </init-param>  
  44.         <load-on-startup>1</load-on-startup>  
  45.     </servlet>  
  46.   
  47.     <servlet-mapping>  
  48.         <servlet-name>spring-mvc</servlet-name>  
  49.         <url-pattern>*.xyz</url-pattern>  
  50.     </servlet-mapping>  
  51.   
  52.     <welcome-file-list>  
  53.         <welcome-file>/index.html</welcome-file>  
  54.     </welcome-file-list>  
  55.     <error-page>  
  56.         <error-code>404</error-code>  
  57.         <location>/404_error.html</location>  
  58.     </error-page>  
  59. </web-app>  

 

WEB-INF/velocity-tools.xml

Xml代码   收藏代码
  1. <toolbox>  
  2.     <tool>  
  3.         <key>stringUtils</key>  
  4.         <scope>application</scope>  
  5.         <class>org.apache.commons.lang.StringUtils</class>  
  6.     </tool>  
  7.     <tool>  
  8.         <key>dateFormatUtils</key>  
  9.         <scope>application</scope>  
  10.         <class>org.apache.commons.lang.time.DateFormatUtils</class>  
  11.     </tool>  
  12.     <tool>  
  13.         <key>escapeUtils</key>  
  14.         <scope>application</scope>  
  15.         <class>org.apache.commons.lang.StringEscapeUtils</class>  
  16.     </tool>  
  17. </toolbox>  

 

spring-velocity.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:mvc="http://www.springframework.org/schema/mvc"  
  4.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.        xmlns:context="http://www.springframework.org/schema/context"  
  6.   
  7.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.                            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  9.                            http://www.springframework.org/schema/mvc  
  10.                            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
  11.                            http://www.springframework.org/schema/context  
  12.                            http://www.springframework.org/schema/context/spring-context-3.2.xsd"  
  13.        default-autowire="byName">  
  14.     <!-- -->  
  15.     <mvc:annotation-driven>  
  16.         <mvc:message-converters>  
  17.             <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
  18.                 <property name = "supportedMediaTypes">  
  19.                     <list>  
  20.                         <value>text/plain;charset=UTF-8</value>  
  21.                         <value>text/html;charset=UTF-8</value>  
  22.                     </list>  
  23.                 </property>  
  24.             </bean>  
  25.   
  26.         </mvc:message-converters>  
  27.     </mvc:annotation-driven>  
  28.   
  29.     <context:component-scan base-package="com.architectj.admin.web.controller"/>  
  30.   
  31.     <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">  
  32.         <property name="resourceLoaderPath" value="/WEB-INF/vm"/>  
  33.         <property name="configLocation" value="classpath:velocity.properties"/>  
  34.     </bean>  
  35.   
  36.     <!-- 上传数据大小 -->  
  37.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  38.         <property name="maxUploadSize" value="5242880"/><!-- 最大5M -->  
  39.     </bean>  
  40.   
  41.     <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">  
  42.     </bean>  
  43.   
  44.     <bean id="exceptionResolver" class="com.architectj.admin.web.ExceptionHandler"/>  
  45.   
  46.     <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">  
  47.         <property name="suffix" value=".vm"/>  
  48.         <property name="layoutUrl" value="layout/default.vm"/>  
  49.         <!-- 使用springMacro、使用servlet的对象 -->  
  50.         <property name="exposeSpringMacroHelpers" value="true"/>  
  51.         <property name="exposeRequestAttributes" value="true"/>  
  52.         <property name="exposeSessionAttributes" value="true"/>  
  53.         <property name="contentType" value="text/html;charset=UTF-8"/>  
  54.         <!-- spring的日期格式化 -->  
  55.         <property name="dateToolAttribute" value="dateTool"/>  
  56.         <property name="toolboxConfigLocation" value="/WEB-INF/velocity-tools.xml"/>  
  57.         <property name="attributesMap">  
  58.             <map>  
  59.             </map>  
  60.         </property>  
  61.     </bean>  
  62.     <mvc:interceptors>  
  63.         <mvc:interceptor>  
  64.             <mvc:mapping path="/user/**" />  
  65.             <mvc:mapping path="/teacher/**"/>  
  66.             <bean class="com.architectj.admin.web.interceptor.LoginInterceptor" />  
  67.         </mvc:interceptor>  
  68.         <mvc:interceptor>  
  69.             <mvc:mapping path="/user/**" />  
  70.             <mvc:mapping path="/teacher/**"/>  
  71.             <bean class="com.architectj.admin.web.interceptor.SecurityInterceptor" />  
  72.         </mvc:interceptor>  
  73.         <mvc:interceptor>  
  74.             <mvc:mapping path="/user/**"/>  
  75.             <mvc:mapping path="/teacher/**"/>  
  76.             <bean class="com.architectj.admin.web.interceptor.PermissionInterceptor"/>  
  77.         </mvc:interceptor>  
  78.     </mvc:interceptors>  
  79. </beans>  

 

 velocity.properties

Xml代码   收藏代码
  1. #encoding    
  2. input.encoding=UTF-8  
  3. output.encoding=UTF-8  
  4. contentType=text/html;charset=UTF-8  
  5. #autoreload when vm changed  
  6. resource.loader=file  
  7. file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader  
  8. file.resource.loader.cache=false  
  9. file.resource.loader.modificationCheckInterval=1  
  10. velocimacro.library.autoreload=true  
  11. velocimacro.library=macro.vm  

 

 macro.vm

Xml代码   收藏代码
  1. #macro(pagination $targetUrl $queryResult)  
  2. <div id="kkpager"></div>  
  3. <script type="text/javascript" src="/lib/kkpager.min.js"></script>  
  4. <script type="text/javascript">  
  5.     //init  
  6.     $(function(){  
  7.         //生成分页  
  8.         //有些参数是可选的,比如lang,若不传有默认值  
  9.         kkpager.generPageHtml({  
  10.             //当前页码  
  11.             pno : $!{query.currentPage},  
  12.             //总页码  
  13.             total : $!{queryResult.totalPage},  
  14.             //总数据条数  
  15.             totalRecords : $!{queryResult.amount},  
  16.             //链接前部  
  17.             hrefFormer : '$targetUrl',  
  18.             //链接尾部  
  19.             hrefLatter : '',  
  20.             getLink : function(n){  
  21.                 if (n == 1){  
  22.                     return this.hrefFormer;  
  23.                 }  
  24.                 return this.hrefFormer + "&page="+n;  
  25.             }  
  26.         });  
  27.     });  
  28. </script>  
  29. #end  

 

 LoginInterceptor

Java代码   收藏代码
  1. public class LoginInterceptor implements HandlerInterceptor{  
  2.   
  3.     @Override  
  4.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  5.          // 解析cookie得到source  
  6.         UserDO user = this.decoder(source);  
  7.         LoginContext context = new LoginContext();  
  8.         context.setUser(user);  
  9.         LoginContextHolder.set(context);  
  10.         return true;  
  11.     }  
  12.   
  13.     @Override  
  14.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  
  15.         if(modelAndView != null) {  
  16.             modelAndView.addObject("xxx",LoginContextHolder.getLoginUser());  
  17.         }  
  18.     }  
  19.   
  20.     @Override  
  21.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  
  22.         LoginContextHolder.clear();  
  23.     }  
  24.   
  25.   
  26.     protected UserDO decoder(String content){  
  27.         // ...  
  28.         return user;  
  29.     }  
  30.   
  31.   
  32. }  

 

 SecurityInterceptor

Java代码   收藏代码
  1. public class SecurityInterceptor implements HandlerInterceptor{  
  2.   
  3.     @Override  
  4.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  5.         LoginContext loginContext = LoginContextHolder.get();  
  6.         if(loginContext != null && loginContext.getUser() != null) {  
  7.             return true;  
  8.         }  
  9.         response.sendRedirect("/login.xyz");//登陆  
  10.         return false;  
  11.     }  
  12.   
  13.     @Override  
  14.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  
  15.   
  16.     }  
  17.   
  18.     @Override  
  19.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  
  20.   
  21.     }  
  22. }  

 

 Controller

Java代码   收藏代码
  1. @Controller  
  2. public class IndexController extends BaseController{  
  3.   
  4.     @Autowired  
  5.     private AdminService adminService;  
  6.   
  7.     @RequestMapping("/login")  
  8.     public ModelAndView login(HttpServletRequest request,HttpServletResponse response) {  
  9.         ModelAndView mav = new ModelAndView();  
  10.         if (LoginContextHolder.getLoginUser() != null){  
  11.             mav.setViewName("redirect:/yyy/list.xyz");  
  12.         }  
  13.         return mav;  
  14.     }  
  15.   
  16.     @RequestMapping(value = "xxxxxx", method = {RequestMethod.POST, RequestMethod.GET})  
  17.     @ResponseBody  
  18.     public String loginAction(@RequestParam("name") String name, @RequestParam("password") String password,  
  19.                               @RequestParam("code") String code,  
  20.                               HttpServletRequest request,HttpServletResponse response) {  
  21.   
  22.         if(LoginContextHolder.getLoginUser() != null){  
  23.             Result result = new Result();  
  24.             result.setSuccess(true);  
  25.             return ResultHelper.renderAsJson(result);  
  26.         }  
  27.   
  28.         //验证码校验  
  29.         // ...  
  30.   
  31.         Result result = this.adminService.login(name.trim(), password);  
  32.         // ...  
  33.         return ResultHelper.renderAsJson(result);  
  34.     }  
  35.   
  36. }  

 附:velocity注释是 ##  注释掉的东西不会再html源码里显示,而<!--会显示,模版引擎/编译器会做忽略的事情,HTML的注释不会忽略



原文链接:[http://wely.iteye.com/blog/2278604]

相关文章
|
11天前
|
SQL Java 数据库连接
(自用)Spring常用配置
(自用)Spring常用配置
15 0
|
14天前
|
前端开发 Java 应用服务中间件
Springboot对MVC、tomcat扩展配置
Springboot对MVC、tomcat扩展配置
|
4天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
13 0
|
4天前
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
28 0
|
5天前
|
安全 Java Spring
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
18 0
|
5天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
19 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
11天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
11天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
11天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
29 3
|
11天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
18 1