【附源码】搭建spring mvc +freemarker
2016-04-30 21:37
519 查看
【源码下载地址:http://pan.baidu.com/s/1nuSKV6h】
准备jar包:
commons-logging-1.2.jar
freemarker-2.3.19.jar
spring-3.2.0.M1(spring3.2的所有jar,包含60个jar)
开发环境:
JDK 1.8
MyEclipse 10
Tomcat 6
1、用MyEclipse创建Web
Porject。Porject名称:TestSpringMvcPrj。
2、在WEB-INF/web.xml里面添加一下代码:
Xml代码
<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区间内。
添加后效果:
<?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代码
<?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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
<!--注解说明 -->
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.lantii.action" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- freemarker的配置 -->
<bean id="freemarkerConfigurer"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 配置模板路径 -->
<property name="templateLoaderPath" value="/WEB-INF/view/" />
<property name="defaultEncoding" value="GBK" />
<property name="freemarkerSettings">
<props>
<!--更新模板文件间隔10毫秒
-->
<prop key="template_update_delay">10</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
</bean>
<!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名ftl和视图解析器。。 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=GBK" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="exposeSpringMacroHelpers" value="true" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="i18n/messages" />
</beans>
4、写控制层代码:
4.1MessageController.Java
Java代码
package com.lantii.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/message")
// url映射的名称
public class MessageController {
@RequestMapping(value = "/{msg}", method = RequestMethod.GET)
public String showMessage(@PathVariable String msg,
HttpServletRequest request, HttpServletResponse response) {
// TODO 处理请求
request.setAttribute("message", msg); // 设置返回消息
return "message"; // 设置返回页面,这里对应 /WEB-INF/view 目录下的 message.ftl 文件
}
@RequestMapping(value = "/add")
public String addMessage(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("message", "message is added");
return "message";
}
}
4.2UserController.java
Java代码
package com.lantii.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lantii.business.user.User;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/login")
public String test(HttpServletRequest request,
HttpServletResponse response, User userinfo) { // 非常方便可以直接在方法里面放入对象
if (userinfo.getUsername().equals("lantii")
&& userinfo.getPassword().equals("ok")) {
request.setAttribute("userinfo", userinfo);
return "users/loginok"; // 判断,将跳转不同的页面
} else {
return "users/loginerr"; // 判断,将跳转不同的页面
}
}
}
4.3User.java
Java代码
package com.lantii.business.user;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5、编写模板
5.1返回页message.ftl
<html>
<body>
<p>This is my message:<br> ${message}</p>
</body>
</html>
5.2users下loginok.ftl
<html>
<body>
hi, <b>${userinfo.username}</b>
</body>
</html>
5.3 users下loginerr.ftl
<html>
<body>
error<br>
</body>
</html>
6、前台调用的测试jsp
Java代码
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>主页</title>
</head>
<body>
<form METHOD=POST ACTION="user/login">
用户名:<input TYPE="text" NAME="username" value="lantii"><br>
密 码:<input TYPE="text" NAME="password" value="ok"><br> <input
TYPE="submit">
</form>
<br>
<a href="message/add" target="_blank">add</a>
<br>
<a href="message/哈哈哈" target="_blank">see:哈哈哈</a>
</body>
</html>
project目录结构:
7、接下来发布project
8、测试
部分内容参考 <http://lavafree.iteye.com/blog/1096699>
准备jar包:
commons-logging-1.2.jar
freemarker-2.3.19.jar
spring-3.2.0.M1(spring3.2的所有jar,包含60个jar)
开发环境:
JDK 1.8
MyEclipse 10
Tomcat 6
1、用MyEclipse创建Web
Porject。Porject名称:TestSpringMvcPrj。
2、在WEB-INF/web.xml里面添加一下代码:
Xml代码
<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区间内。
添加后效果:
<?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代码
<?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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
<!--注解说明 -->
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.lantii.action" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- freemarker的配置 -->
<bean id="freemarkerConfigurer"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 配置模板路径 -->
<property name="templateLoaderPath" value="/WEB-INF/view/" />
<property name="defaultEncoding" value="GBK" />
<property name="freemarkerSettings">
<props>
<!--更新模板文件间隔10毫秒
-->
<prop key="template_update_delay">10</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
</bean>
<!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名ftl和视图解析器。。 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=GBK" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="exposeSpringMacroHelpers" value="true" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="i18n/messages" />
</beans>
4、写控制层代码:
4.1MessageController.Java
Java代码
package com.lantii.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/message")
// url映射的名称
public class MessageController {
@RequestMapping(value = "/{msg}", method = RequestMethod.GET)
public String showMessage(@PathVariable String msg,
HttpServletRequest request, HttpServletResponse response) {
// TODO 处理请求
request.setAttribute("message", msg); // 设置返回消息
return "message"; // 设置返回页面,这里对应 /WEB-INF/view 目录下的 message.ftl 文件
}
@RequestMapping(value = "/add")
public String addMessage(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("message", "message is added");
return "message";
}
}
4.2UserController.java
Java代码
package com.lantii.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lantii.business.user.User;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/login")
public String test(HttpServletRequest request,
HttpServletResponse response, User userinfo) { // 非常方便可以直接在方法里面放入对象
if (userinfo.getUsername().equals("lantii")
&& userinfo.getPassword().equals("ok")) {
request.setAttribute("userinfo", userinfo);
return "users/loginok"; // 判断,将跳转不同的页面
} else {
return "users/loginerr"; // 判断,将跳转不同的页面
}
}
}
4.3User.java
Java代码
package com.lantii.business.user;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5、编写模板
5.1返回页message.ftl
<html>
<body>
<p>This is my message:<br> ${message}</p>
</body>
</html>
5.2users下loginok.ftl
<html>
<body>
hi, <b>${userinfo.username}</b>
</body>
</html>
5.3 users下loginerr.ftl
<html>
<body>
error<br>
</body>
</html>
6、前台调用的测试jsp
Java代码
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>主页</title>
</head>
<body>
<form METHOD=POST ACTION="user/login">
用户名:<input TYPE="text" NAME="username" value="lantii"><br>
密 码:<input TYPE="text" NAME="password" value="ok"><br> <input
TYPE="submit">
</form>
<br>
<a href="message/add" target="_blank">add</a>
<br>
<a href="message/哈哈哈" target="_blank">see:哈哈哈</a>
</body>
</html>
project目录结构:
7、接下来发布project
8、测试
部分内容参考 <http://lavafree.iteye.com/blog/1096699>
相关文章推荐
- 20145208 《Java程序设计》第9周学习总结
- 浅析Java中CountDownLatch用法
- java基础笔记04
- Java循环练习: 有1、2、3、4四个数字,能组成多少个无重复数字的三位数?都是多少?
- ojdbc*jar 与jdk*那些事儿
- Java循环练习:婚礼上的谎言
- 【Java】——J2EE基础
- 《Java中的自动装箱和拆箱功能.》
- Java单元测试工具:JUnit4——JUnit详解之运行流程及常用注解
- Java重拾之猜数字小游戏
- 20145330《Java程序设计》第四次实验报告
- Java 之 线程和进程
- Java循环练习:百鸡问题
- java项目——防止羊毛党“薅羊毛”
- Java多线程实例
- Java:垃圾回收机制
- java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist
- springmvc实现图片的上传
- Java内存模型
- java中的匿名内部类总结