纯注解版SpringMVC(无web.xml配置文件)项目创建

您所在的位置:网站首页 springmvc注解扫描 纯注解版SpringMVC(无web.xml配置文件)项目创建

纯注解版SpringMVC(无web.xml配置文件)项目创建

2023-08-27 14:32| 来源: 网络整理| 查看: 265

 

前言

为了学习SpringBoot框架,感受其“零配置”的魅力,我们先来感受一下纯注解版SpringMVC4项目的便捷,无需配置xml文件,依靠注解和配置类完成配置。本文以一个简单的项目为例,实现了Maven+SpringMVC注解版项目的搭建,为学习SpringBoot提供一个良好的过渡。

 

一、项目结构

 

 

二、Maven项目构建 1.pom.xml: 4.0.0 com.lyy myWebApp 0.0.1-SNAPSHOT war 1.8 UTF-8 UTF-8 2.2 1.2 3.1.0 5.1.5.RELEASE 1.0.13 1.7.21 javax javaee-web-api 7.0 provided org.springframework spring-webmvc ${spring-framework.version} javax.servlet jstl ${jstl.version} javax.servlet javax.servlet-api ${servlet.version} provided javax.servlet.jsp jsp-api ${jsp.version} provided org.springframework spring-tx ${spring-framework.version} org.slf4j slf4j-api ${slf4j.version} log4j log4j 1.2.17 org.slf4j jcl-over-slf4j 1.7.21 ch.qos.logback logback-classic 1.2.3 ch.qos.logback logback-core 1.2.3 ch.qos.logback logback-access 1.2.3 apache.maven.plugins maven-compiler-plugin 3.8.1 ${java.version} ${java.version} org.apache.maven.plugins maven-war-plugin 2.3 false

 

  2.演示页面(index.jsp)

在src/main/resources 下创建views目录,并在此目录下新建NewFile.jsp

代码如下:

Insert title here     Welcome to Spring MVC world

注意:可能你会问,为什么jsp页面不是放在Maven标准的src/main/webapp/WEB-INF下,这里这样建的目的是为了熟悉SpringBoot的页面放置习惯,SpringBoot的页面就是放在src/main/resources

  3.SpringMVC配置

相当于bean.xml,我们结合注解用一个配置类MyMvcConfig来代替bean.xml

代码如下(示例):

package myWebApp; 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.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @Configuration @EnableWebMvc @ComponentScan("myWebApp") public class MyMvcConfig { @Bean public InternalResourceViewResolver viewResolver() { // TODO Auto-generated method stub InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/classes/views/"); viewResolver.setSuffix(".jsp"); viewResolver.setViewClass(JstlView.class); return viewResolver; } }

这里没有什么特别地,只是一个普通的 Spring 配置类。这里我们配置了一个 JSP 的ViewResolver,用来映射路径和实际页面的位置,其中,@EnableWebMvc 注解会开启一些默认配置,如一些 ViewResolver 或者 MessageConverter等。在此处要特别解释一下 Spring MVC 的 ViewResolver,这是Spring MVC视图(JSP下就是html)渲染的核心机制;Spring MVC 里有一个接口叫做ViewResolver(我们的 ViewResolver都实现该接口),实现这个接口要重写方法resolveViewName(),这个方法的返回值是接口 View,而 View 的职责就是使用 model、request、response 对象,并将渲染的视图(不一定是 html,可能是json、xml、pdf)返回给浏览器。 到这里你可能对路径前缀配置为/WEB-INF/classes/views/有些奇怪,怎么和我开发的目录不一致?因为看到的页面效果是运行时而不是开发时的代码,运行时代码会将我们的页面自动编译到/WEB-INF/classes/views/下,下图是运行时的目录结构(maven打包后target下的目录),这样我们就能理解前缀为什么写成这样,在Spring Boot中,可以使用Thymeleaf作为模板,因而不需要这样的配置。

 

  4.Web配置类

相当于web.xml

代码如下(示例):

package myWebApp; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; public class WebConfig implements WebApplicationInitializer{//1 @Override public void onStartup(ServletContext servletContext) throws ServletException { // TODO Auto-generated method stub AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(MyMvcConfig.class); ctx.setServletContext(servletContext);//2 Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));//3 servlet.addMapping("/");//添加上下文路径地址 servlet.setLoadOnStartup(1);//最优先启动 } }

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

5.Controller

代码如下:

package myWebApp; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/")//请求拦截,拦截所有方法 public class MyController { @RequestMapping("/index") public String hello() { System.out.println("controller"); return "NewFile"; } @RequestMapping("/bye") public String bye() { System.out.println("controller"); return "bye"; } }  

通过SpringMVC配置里ViewResolver的Bean配置,返回值为NewFile,说明我们的页面放置路径是/WEB-INF/classes/views/NewFile.jsp

注意:注意!注意!注意!这里一定要对类进行拦截(在类上加@RequestMapping("/"),拦截所有方法),否则访问时会报404,找不到项目入口。

5.运行

将程序部署到Tomcat,启动Tomcat,并访问http://localhost:8080:myWepApp/index.如下图,成功!

 

 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了如何构建“零配置”注解版SpringMVC项目,为学习SpringBoot进行一个良好的过渡。我在之后学习SpringBoot的时候,如果遇到值得探讨的问题,或者比较难解决的问题,解决之后,也会不定期更新博客。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3