【附源码】搭建spring mvc +freemarker

【源码下载地址:http://pan.baidu.com/s/1nuSKV6h】


准备jar包:

commons-logging-1.2.jar

freemarker-2.3.19.jar

spring-3.2.0.M1spring3.2的所有jar,包含60jar

 

开发环境:

JDK 1.8

MyEclipse 10

Tomcat 6

 

1、用MyEclipse创建Web PorjectPorject名称:TestSpringMvcPrj

2、在WEB-INF/web.xml里面添加一下代码:

 

Xml代码  

收藏代码

  1. <servlet>  
  1.         <servlet-name>springmvc</servlet-name>  
  2.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  3.         <load-on-startup>2</load-on-startup>  
  4.     </servlet>  
  5.     <servlet-mapping>  
  6.         <servlet-name>springmvc</servlet-name>  
  7.         <url-pattern>/</url-pattern>  
  8.     </servlet-mapping>  

注意是添加在web-app区间内。

添加后效果:

<?xmlversion="1.0" encoding="UTF-8"?>

<web-appversion="3.0"

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_3_0.xsd">

 <display-name></display-name>        

  <welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

 

  <servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

 

springmvc 主要通过DispatcherServlet做分发。上面的servlet名字叫springmvc所以在WEB-INF下面新建一个springmvc-servlet.xml文件

 

3、springmvc-servlet.xml配置

 

 

Xml代码  

收藏代码

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  2.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"  
  3.     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
  4.   
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  6.             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    
  7.             http://www.springframework.org/schema/context    
  8.             http://www.springframework.org/schema/context/spring-context-3.0.xsd    
  9.             http://www.springframework.org/schema/tx    
  10.             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd    
  11.             http://www.springframework.org/schema/jdbc    
  12.             http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">  
  13.   
  14.     <!--注解说明 -->  
  15.     <context:annotation-config />  
  16.     <!-- 把标记了@Controller注解的类转换为bean -->  
  17.     <context:component-scan base-package="com.lantii.action" />  
  18.     <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 -->  
  19.     <bean  
  20.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  21.   
  22.     <!-- freemarker的配置 -->  
  23.     <bean id="freemarkerConfigurer"  
  24.         class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
  25.         <!-- 配置模板路径 --> 

   <property name="templateLoaderPath" value="/WEB-INF/view/" />  

  1.         <property name="defaultEncoding" value="GBK" />  
  2.         <property name="freemarkerSettings">  
  3.             <props>  

<!--更新模板文件间隔10毫秒 -->

  1.                 <prop key="template_update_delay">10</prop>  
  2.                 <prop key="locale">zh_CN</prop>  
  3.                 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>  
  4.                 <prop key="date_format">yyyy-MM-dd</prop>  
  5.                 <prop key="number_format">#.##</prop>  
  6.             </props>  
  7.         </property>  
  8.     </bean>  
  9.     <!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名ftl和视图解析器。。 -->  
  10.     <bean id="viewResolver"  
  11.         class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
  12.         <property name="viewClass"  
  13.             value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />  
  14.         <property name="suffix" value=".ftl" />  
  15.         <property name="contentType" value="text/html;charset=GBK" />  
  16.         <property name="exposeRequestAttributes" value="true" />  
  17.         <property name="exposeSessionAttributes" value="true" />  
  18.         <property name="exposeSpringMacroHelpers" value="true" />  
  19.     </bean>  
  20.   
  21.     <bean id="messageSource"  
  22.         class="org.springframework.context.support.ResourceBundleMessageSource"  
  23.         p:basename="i18n/messages" />  
  1. </beans>  

 

4、写控制层代码:

4.1MessageController.Java

 

 

Java代码  

收藏代码

  1. package com.lantii.action;  
  1.   
  1. import javax.servlet.http.HttpServletRequest;  
  2. import javax.servlet.http.HttpServletResponse;  
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.PathVariable;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6. import org.springframework.web.bind.annotation.RequestMethod;  
  1.   
  1. @Controller  
  2. @RequestMapping("/message")  
  1. // url映射的名称  
  1. public class MessageController {  
  1.   
  2.     @RequestMapping(value = "/{msg}", method = RequestMethod.GET)  
  3.     public String showMessage(@PathVariable String msg,  
  4.             HttpServletRequest request, HttpServletResponse response) {  
  5.         // TODO 处理请求  
  6.         request.setAttribute("message", msg); // 设置返回消息  
  7.         return "message"// 设置返回页面,这里对应 /WEB-INF/view 目录下的 message.ftl 文件  
  8.     }  
  9.   
  10.     @RequestMapping(value = "/add")  
  11.     public String addMessage(HttpServletRequest request, HttpServletResponse response) {  
  12.         request.setAttribute("message""message is added");  
  13.         return "message";  
  14.   
  15.     }  
  16. }  

 

4.2UserController.java

  

Java代码  

收藏代码

  1. package com.lantii.action;  
  1.   
  1. import javax.servlet.http.HttpServletRequest;  
  2. import javax.servlet.http.HttpServletResponse;  
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import com.lantii.business.user.User;  
  1.   
  1. @Controller  
  2. @RequestMapping("/user")  
  1. public class UserController {  
  1.     @RequestMapping(value = "/login")  
  2.     public String test(HttpServletRequest request,  
  3.             HttpServletResponse response, User userinfo) { // 非常方便可以直接在方法里面放入对象  
  4.         if (userinfo.getUsername().equals("lantii")  
  5.                 && userinfo.getPassword().equals("ok")) {  
  6.             request.setAttribute("userinfo", userinfo);  
  7.             return "users/loginok"// 判断,将跳转不同的页面  
  8.         } else {  
  9.             return "users/loginerr"// 判断,将跳转不同的页面  
  10.         }  
  11.     }  
  12. }  

 

4.3User.java

 

Java代码  

收藏代码

  1. package com.lantii.business.user;  
  1.   
  1. public class User {  
  1.     private String username;  
  2.     private String password;  
  3.     public String getUsername() {  
  4.         return username;  
  5.     }  
  6.     public void setUsername(String username) {  
  7.         this.username = username;  
  8.     }  
  9.     public String getPassword() {  
  10.         return password;  
  11.     }  
  12.     public void setPassword(String password) {  
  13.         this.password = password;  
  14.     }  
  15.       
  16. }  

 

 

 

5、编写模板

5.1返回页message.ftl

 

 

  

收藏代码

  1. <html>  
  2. <body>  
  3.     <p>This is my message:<br> ${message}</p>  
  4. </body>  
  5. </html>  

 

5.2usersloginok.ftl

 

 

收藏代码

  1. <html>  
  2. <body>  
  3.     hi, <b>${userinfo.username}</b>  
  4.   
  5. </body>  
  6. </html>  

5.3 usersloginerr.ftl

<html>

<body>

error<br>

 

</body>

</html>

 

 

6、前台调用的测试jsp

 

 

Java代码  

收藏代码

  1. <%@ page language="java" contentType="text/html; charset=GBK"  
  2.     pageEncoding="GBK"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
  7. <title>主页</title>  
  8. </head>  
  9. <body>  
  10.     <form METHOD=POST ACTION="user/login">  
  11.         用户名:<input TYPE="text" NAME="username" value="lantii"><br>  
  12.         密 码:<input TYPE="text" NAME="password" value="ok"><br> <input  
  13.             TYPE="submit">  
  14.     </form>  
  15.     <br>  
  16.     <a href="message/add" target="_blank">add</a>  
  17.     <br>  
  18.     <a href="message/哈哈哈" target="_blank">see:哈哈哈</a>  
  19. </body>  
  20. </html> 

 

project目录结构:


 

7、接下来发布project


 

8、测试



 

 

部分内容参考 <http://lavafree.iteye.com/blog/1096699

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值