博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JavaConfig和注解方式实现零xml配置的Spring MVC项目
阅读量:4877 次
发布时间:2019-06-11

本文共 7679 字,大约阅读时间需要 25 分钟。

1. 引言

Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架。Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求。

在平时项目开发中,通常在web.xml下配置元素,但是我希望尝试通过实现WebApplicationInitilalizer接口来实现无web.xml的方式去搭建一个Spring MVC项目。

2. Spring MVC 项目的搭建

2.1 构建Maven项目

pom.xml

4.0.0
org.aming
springmvc1
0.0.1-SNAPSHOT
war
1.8
UTF-8
UTF-8
2.2
1.2
3.1.0
4.1.5.RELEASE
1.0.13
1.7.5
javax
javaee-web-api
7.0
provided
org.springframework
spring-webmvc
${spring.version}
javax.servlet
jstl
${jstl.version}
javax.servlet
javax.servlet-api
${servlet.version}
provided
javax.servlet.jsp
jsp-api
${jsp.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
log4j-over-slf4j
${slf4j.version}
org.slf4j
jcl-over-slf4j
${slf4j.version}
org.slf4j
jul-to-slf4j
${slf4j.version}
com.googlecode.log4jdbc
log4jdbc
1.2
runtime
ch.qos.logback
logback-classic
${logback.version}
ch.qos.logback
logback-core
${logback.version}
ch.qos.logback
logback-access
${logback.version}
springmvc
org.apache.maven.plugins
maven-compiler-plugin
2.5.1
${java.version}
${java.version}
org.apache.maven.plugins
maven-war-plugin
2.3
false

2.1 日志配置

我们使用logback去管理我们的日志,相比去log4j,logback性能更为出色。我们在src/main/reources目录下,新建logback.xml,其内容如下:

true
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%method - [%X{logback}] - %msg%n

说明:在开发Spring MVC的过程中经常出现和参数类型相关的4XX错误,将org.springframework.web包下的类的日志级别设置为debug可以看到更详细的错误信息。

2.3 演示页面

在src/main/resources下建立views目录,并在此目录下新建index.jsp,body元素中添加以下内容:

        Welcome to Spring MVC world    

说明:

  1. 在Maven标准中,页面通常放在src/main/webapp/WEB-INF下,此处这样放置页面的主要目的是和Spring Boot的页面放置方式保持一致;
  2. 在ecplise中新建jsp页面默认是在webapp中,即使是在src/main/resources下目录点击新建,因此在新建jsp时需要重新选择合适的目录。

2.4 Spring MVC 配置

新建ApplicationConfiguration类作为Spring MVC的配置类,其内容如下:

@Configuration@EnableWebMvc@ComponentScan("org.aming.demo.springmvc")public class ApplicationConfiguration {        @Bean    public InternalResourceViewResolver viewResolver() {        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();        //运行时代码会将位于src/main/resources目录下的页面自动编译到/WEB-INF/classes/views/下        //如果是src/main/webapp/WEB-INF的页面,那么prefix是/WEB-INF/views/        viewResolver.setPrefix("/WEB-INF/classes/views/");        viewResolver.setSuffix(".jsp");        viewResolver.setViewClass(JstlView.class);        return viewResolver;    }}

说明:

  1. @Configuration注解表明ApplicationConfiguration是一个普普通通配置类;
  2. @EnableWebMvc注解会开启一些默认配置,如一些ViewResolver或者MessageConverter等;
  3. @ComponentScan注解将会扫描指定包下通过注解配置的bean。

2.5 Web配置

新建WebInitializer类并实现WebApplicationInitializer接口:

public class WebInitializer implements WebApplicationInitializer {    @Override    public void onStartup(ServletContext servletContext) throws ServletException {        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();         ctx.register(ApplicationConfiguration.class);         ctx.setServletContext(servletContext);         Dynamic servlet = servletContext.addServlet("dispatcher",new DispatcherServlet(ctx));         servlet.addMapping("/");         servlet.setLoadOnStartup(1);    }}

说明:

  1. WebApplicationInitializer是Spring提供用来配置Servlet3.0+配置的接口,从而实现了替代web.xml的位置。实现此接口将会自动被SpringServletContainerInitializer(用来启动Servlet3.0容器)获取到。
  2. 新建WebApplicationContext,注册配置类(ApplicationConfiguration),并和其和当前servletContext关联
  3. 注册Spring MVC的DispatcherServlet。

2.6 简单控制器

新建HelloController类去完成URL和方法之间的映射:

@Controllerpublic class HelloController {    @RequestMapping("/index")    public String hello() {        return "index";    }}

3. 运行结果

将项目打成war包部署到tomcat中,启动tomcat,在浏览器中输入:http://127.0.0.1:8080/springmvc/index

运行结果截图

4. 参考书籍

汪云飞:。

转载于:https://www.cnblogs.com/xiao2/p/7411854.html

你可能感兴趣的文章
记开发个人图书收藏清单小程序开发(九)Web开发——新增图书信息
查看>>
四则运算完结篇
查看>>
poj3401二分图
查看>>
Objective-C中的类目,延展,协议
查看>>
Python标准模块--Iterators和Generators
查看>>
Introduction Sockets to Programming in C using TCP/IP
查看>>
PHP 简单实现webSocket
查看>>
zookeeper部署搭建
查看>>
navigationController pop回之前控制器
查看>>
汇编语言实验一
查看>>
Web.config配置文件详解(新手必看)
查看>>
selenide总结
查看>>
selenium--控制浏览器和简单元素操作
查看>>
[笔记] imooc《JavaScript深入浅出》对象与函数
查看>>
hdu1078FatMouse and Cheese
查看>>
jquery 处理密码输入框(input type="password" ) 模仿placeholder
查看>>
移动端touch触摸事件(滑动效果和手势操作)
查看>>
HTTP、TCP、 UDP、 IP 、 Socket的关系
查看>>
Linux终端使用技巧——个人总结
查看>>
简单通用线程池的实现
查看>>