您的位置:首页 > 编程语言 > Java开发

纯Java配置SpringMvc&Freemarker&JdbcTemplate

2018-03-05 17:30 330 查看
主要演示纯java配置springmvc+jdbcTemplate+Freemarker

与上一片(http://blog.csdn.net/niugang0920/article/details/79448171)列子相比主要变动了,pom.xml,SpringMvcConfig.java,及WEB-INF/views/下面页面的变化,重复代码就不在这里列出了1.pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>spring</groupId> <artifactId>javaconfig</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>
<name>2_springjavaconfig_freemarker</name> <url>http://maven.apache.org</url>
<properties> <!-- Generic properties --> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Web --> <jsp.version>2.2</jsp.version> <jstl.version>1.2</jstl.version> <servlet.version>3.1.0</servlet.version> <!-- Spring --> <spring-framework.version>4.3.7.RELEASE</spring-framework.version> <!-- Logging --> <logback.version>1.0.13</logback.version> <slf4j.version>1.7.5</slf4j.version> </properties>
<dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency>
<!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-framework.version}</version> </dependency>
<!-- 其他web依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency><!--FreeMarker作为视图解析 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <!-- <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> </dependency> -->
<!-- Spring and Transactions --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-framework.version}</version> </dependency>
<!-- 使用SLF4J和LogBack作为日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>${logback.version}</version> </dependency><!--对json和xml格式的支持 --> <!-- <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.5.3</version> </dependency> --> <!--配置springmvc信息转化为json所需的json包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.6</version> </dependency> <!-- file upload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <!-- 非必需,可简化IO操作 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.3</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring-framework.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-framework.version}</version> <scope>test</scope> </dependency>
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.6</version> </dependency> <!--aspectj依赖 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>1.8.9</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.7.4</version> </dependency> <!--mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build></project>2.SpringMvcConfig.java变化package com.niugang;
import javax.servlet.ServletContext;
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import org.springframework.web.servlet.view.freemarker.FreeMarkerView;import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;import freemarker.cache.WebappTemplateLoader;
/** * * @author niugang springmvc java配置文件 */@Configuration // 说明此类为配置文件类@EnableWebMvc // 开启springmvc@ComponentScan("com.niugang") // 组件扫描public class SpringMVCconfig extends WebMvcConfigurerAdapter { /** * freemaker作为视图解析器 * * @return */ @Bean public FreeMarkerViewResolver viewResolver() { FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); resolver.setContentType("text/html;charset=utf-8"); /* * 如果注释 resolver.setPrefix("/WEB-INF/views/"); * 下面config需要tplCfg.setTemplateLoader(new * WebappTemplateLoader(servletContext,"/WEB-INF/views/")); */ resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".html"); resolver.setViewClass(FreeMarkerView.class); return resolver; } /** * 配置freemarker * @param servletContext * @return */ @Bean public FreeMarkerConfigurer freeMarkerConfigurer(ServletContext servletContext) { FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); @SuppressWarnings("deprecation") freemarker.template.Configuration tplCfg = new freemarker.template.Configuration(); tplCfg.setDefaultEncoding("UTF-8"); tplCfg.setTemplateLoader(new WebappTemplateLoader(servletContext)); freeMarkerConfigurer.setConfiguration(tplCfg); return freeMarkerConfigurer; }
/** * 配置静态资源的处理 对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }}ExceptionControllerAscept.java 用于异常处理package com.niugang.aop;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.EnableAspectJAutoProxy;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestAttributes;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;
/** * controller层统一异常处理 * * @author niugang * */@Aspect@Component@EnableAspectJAutoProxypublic class ExceptionControllerAscept {
private Logger logger = LoggerFactory.getLogger(ExceptionControllerAscept.class); /** * 匿名切点的方式 * @param ex * @throws ServletException * @throws IOException */ @AfterThrowing(value = "execution(public * com.niugang.controller..*.*(..))", throwing = "ex") public ModelAndView aroundAdvice(Exception ex) throws ServletException, IOException {
               /*RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes r = (ServletRequestAttributes) requestAttributes;
HttpServletRequest request = r.getRequest();
HttpServletResponse response = r.getResponse();*/
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
//第一如果是 RuntimeException
if (ex instanceof RuntimeException) {
logger.error("抛出运行时异常{}", ex.getMessage());
modelAndView.addObject("errorMsg", ex.getMessage());
return modelAndView;
}
modelAndView.addObject("errorMsg", "未知异常");
return modelAndView;

}
}
WEB-INF/views下页面变化index.html
<!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>Insert title here</title></head><body> 纯java配置方式构建spring框架<br> <!--${msg}--> <hr> 纯java配置访问jdbc <a href="list">数据列表</a> <hr> 纯java配置访问aop处理异常 <a href="error">异常</a></body>list.html<!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><style type="text/css">table { border-collapse: collapse; margin: 0 auto;}
table, td, th { border: 1px solid black; padding: 15px;}</style></head><body> <a href="toAdd" >添加</a> <table> <thead> <tr> <th>用户名</th> <th>年龄</th> <th>电话</th> <th>操作</th> </tr>
</thead> <tbody> <#if users??> <#list users as user> <tr> <td>${user.name}</td> <td>${user.age}</td> <td>${user.phone}</td> <td><a href="javascript:void(0)" onclick="edit('${user.id}')" >编辑</a> <a href="javascript:void(0)" onclick="del('${user.id}')">删除</a> <a href="javascript:void(0)" onclick="detail('${user.id}')">详情</a> </td> </tr> </#list> </#if>
</tbody> </table></body><a href="javascript:history.back(-1)">返回</a></html>detail.html<!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></head><body> <h2>详情</h2> 姓名<input type="text" readonly value="${user.name}"> 年龄<input type="text" readonly value="${user.age}"> 电话<input type="text" readonly value="${user.phone}"> <a href="javascript:history.back(-1)">返回</a></body></html>add.html<!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>ADD PAGE</title></head><body> <h2>增加信息 </h2> <form action="save" method='post'> 姓名:<input type="text" name="name"> <p> 年龄:<input type="text" name="age"> <p> 电话:<input type="text" name="phone"> <p> <input type="submit" value="æ交"> </form></body></html>error.html<!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>Insert title here</title></head><body> ${errorMsg} <a href="javascript:history.back(-1)">返回</a></body></html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息