springMVC+freemarker+slf4j整合(基于注解方式)

springmvc在项目中使用较多,本文将基于spring注解springMVC+freemarker+slf4j整合在一起,便于开发,后续还会将ibatis整合进来。

第一步:使用编程工具建立web工程,本文使用eclipse + tomcat 7.0 + jdk 1.7。

第二步:引入工程使用到的jar文件:

commons-logging-1.1.3.jar、freemarker-2.3.20.jar、logback-classic-1.0.9.jar、logback-core-1.0.9.jar、slf4j-api-1.7.7.jar、slf4j-ext-1.7.7.jar、spring-aop-4.0.5.RELEASE.jar、spring-beans-4.0.5.RELEASE.jar、spring-context-4.0.5.RELEASE.jar、spring-context-support-4.0.5.RELEASE.jar、spring-core-4.0.5.RELEASE.jar、spring-expression-4.0.5.RELEASE.jar、spring-web-4.0.5.RELEASE.jar、spring-webmvc-4.0.5.RELEASE.jar

第三步:web.xml文件增加springmvc配置:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

id="WebApp_ID" version="3.0">

<display-name>BBS</display-name>

<!-- Spring 服务层的配置文件 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!-- Spring 容器启动监听器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<servlet>

<servlet-name>spring</servlet-name>

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

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

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

</servlet-mapping>

</web-app>

第四步:在web.xml同层目录建立相应spring-servlet.xml文件,该文件名称由web.xml中servlet-name加-servlet组成。内容如下:

<?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:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<!--对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->

<context:component-scan base-package="com.zxy"/>

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 -->

<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
/>

<!--视图解释器 -->

<bean id="viewResolver"

class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

<property name="suffix">

<value>.ftl</value>

</property>

<property name="contentType"
value="text/html;charset=UTF-8"></property>

</bean>

</beans>

第五步:建立日志配置logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<!-- 控制台输出 -->

<appender name="consoleAppender"
class="ch.qos.logback.core.ConsoleAppender">

<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<Pattern>%d{yyyy-MM-dd
 HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</Pattern>

</encoder>

</appender>

<!-- 文件输出 -->

<appender name="fileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">

<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>../logs/bbs.%d{yyyy-MM-dd}.log</fileNamePattern>

<maxHistory>30</maxHistory>

</rollingPolicy>

<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<Pattern>%d{yyyy-MM-dd
 HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</Pattern>

</encoder>

</appender>

<root level="info">

<appender-ref ref="consoleAppender" />

<appender-ref ref="fileAppender" />

</root>

</configuration>

第六步:在applicationContext.xml文件中增加freemarker的配置:

<?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.5.xsd">

<!-- Freemarker配置 -->

<bean id="freemarkerConfig"

class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

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

<property name="freemarkerSettings">

<props>

<prop key="template_update_delay">0</prop>

<prop key="default_encoding">UTF-8</prop>

<prop key="number_format">0.##########</prop>

<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>

<prop key="classic_compatible">true</prop>

<prop key="template_exception_handler">ignore</prop>

</props>

</property>

</bean>

</beans>

第七步:建立页面展示hello.ftl文件:

<!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=UTF-8">

<title>${title}</title>

</head>

<body>

${content}

</body>

</html>

第八步:建立日志帮助类LoggerUtil.java:

/**

*

*/

package com.zxy.util;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* @author zxy

*

*/

public class LoggerUtil {

private static String NAME = LoggerUtil.class.getName();

private LoggerUtil()

{

}

public static Logger getLogger()

{

return getLogger(getClassName());

}

public static Logger getLogger(String className)

{

return LoggerFactory.getLogger(className);

}

private static String getClassName()

{

StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

for (int i = 1; i < stacks.length; i++) {

if(!NAME.equals(stacks[i].getClassName()))

{

return stacks[i].getClassName();

}

}

return NAME;

}

}

第九步:建立后台控制文件HelloWorldController.java

/**

*

*/

package com.zxy.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;

import com.zxy.util.LoggerUtil;

/**

* @author zxy

*

*/

@Controller

public class HelloWorldController{

private final Logger logger = LoggerUtil.getLogger();

@RequestMapping(value="/hello", method={RequestMethod.GET})

public ModelAndView handleRequest(HttpServletRequest arg0,

HttpServletResponse arg1) throws Exception {

logger.info("hello start...");

ModelAndView mv = new ModelAndView("hello");

mv.addObject("title", "Spring MVC And Freemarker");

mv.addObject("content", " Hello world , test my first spring mvc ! ");

logger.info("hello end...");

return mv;

}

}

第十步:将web工程加入tomcat容器中,并启动服务,访问url:http://localhost:8080/BBS/hello,后台出现如下日志,则证明部署成功:

......

......

信息: Mapped URL path [/hello] onto handler ‘HelloAction‘

六月 09, 2014 11:06:46 下午 org.springframework.web.servlet.DispatcherServlet
initServletBean

信息: FrameworkServlet ‘spring‘: initialization completed in 420 ms

六月 09, 2014 11:06:46 下午 org.apache.coyote.AbstractProtocol start

信息: Starting ProtocolHandler ["http-apr-8080"]

六月 09, 2014 11:06:46 下午 org.apache.coyote.AbstractProtocol start

信息: Starting ProtocolHandler ["ajp-apr-8009"]

六月 09, 2014 11:06:46 下午 org.apache.catalina.startup.Catalina start

信息: Server startup in 2967 ms

2014-06-09  23:07:02.739 [http-apr-8080-exec-5] INFO
 com.zxy.controller.HelloWorldController - hello start...

2014-06-09  23:07:02.743 [http-apr-8080-exec-5] INFO
 com.zxy.controller.HelloWorldController - hello end...

PS:工程文件目录如下

时间: 2024-08-28 17:21:13

springMVC+freemarker+slf4j整合(基于注解方式)的相关文章

springMVC+freemarker+slf4j整合(基于注解方式)准尊篆遵祖宗

http://www.ebay.com/cln/3t9_vznf/2015-01-29/166763640011 http://www.ebay.com/cln/lbv_dlrh/2015-01-29/166763632011 http://www.ebay.com/cln/lvx_xhlb/2015-01-29/166613270010 http://www.ebay.com/cln/l53_nfpf/2015-01-29/166613253010 http://www.ebay.com/cl

springMVC+freemarker+slf4j整合(基于注解方式)滋走综浊罪妆

http://www.ebay.com/cln/brx_tbxp/2015-01-29/166662145014 http://www.ebay.com/cln/7hn_dnvn/2015-01-29/166690691010 http://www.ebay.com/cln/5rf_jhrb/2015-01-29/166576097017 http://www.ebay.com/cln/znp_xbrd/2015-01-29/166496780019 http://www.ebay.com/cl

SpringMVC+FreeMarker+Mybatis 整合

这个项目自己有时写写测试代码什么的, 代码比较简单,代码已放在 github : https://github.com/zhouyongtao/homeinns-web 目录结构: 贴一下Maven的POM <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo

Spring声明式事务管理(基于注解方式实现)

----------------------siwuxie095 Spring 声明式事务管理(基于注解方式实现) 以转账为例 1.导入相关 jar 包(共 10 个包) (1)导入核心 jar 包和日志相关的 jar 包 (2)导入 JdbcTemplate 的 jar 包 (3)导入 MySQL 的 JDBC 驱动包 mysql-connector-java 下载链接: https://dev.mysql.com/downloads/connector/j/ (4)导入 AOP 的 jar

基于注解方式的XFire之WebService框架与SSJ架构集成案例

最近在给公司做一个基于webservice的数据提供接口,接口提供给第三方公司业务系统调用,完成数据对接.实现起来也相对简单,其实就是通过中间件服务提取内部系统授权数据组织相应的数据格式然后通过webservice的方式暴露获取数据接口给第三方应用,供其调用.要实现这样的需求每个公司的实现方式有可能不一样,根据每个公司实现中间件服务应用使用的实现语言而定.可选择的方案很多,比如如果你们公司的使用的C#的来实现,那么可选择的方案有WCF等技术方案:但是如果你们的中间件服务实现语言是java,那么实

SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍

SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理 以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回.在使用注解 的SpringMVC中,处理器Handler是基于@Controller和@RequestMapping这

SpringMVC系列(四)注解方式上传文件

本文主要介绍SpringMVC上传文件的两种方式 第二种较第一种而言,采用了解析器,大大提高了上传的效率. 第一种: 步骤: 1.引入jar包 2.配置spring-servlet.xml文件 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.Commons

Hibernate基于注解方式的各种映射全面总结

1. 使用Hibernate Annotation来做对象关系映射 1) 添加必须包: hibernate-jpa-2.0-api-1.0.0.Final.jar 2) 在实体类中添加JPA的标准注解来进行对象关系映射.注解可以添加在属性上,也可以添加在getXxx()方法之上. a) @Entity 映射一个实体类 @Table 指定关联的表 b) @Id 映射OID c) @GeneratedValue 指定OID的生成策略 d) @Version 映射版本号属性 e) @Column 指定

5、springcloud整合mybatis注解方式

公众号:java乐园 1.上一篇学习了服务提供者provider,但是并不是单单就学习了服务提供者.中间还穿插使用了Hikari数据源和spring cloud整合mybatis.但是上篇使用mybatis时还是沿用了老的方式,需要配置mapper对应的xml文件.先来看看上篇使用mybatis的主要步骤一. pom.xml文件引用 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis