继初步建立maven工程之后。
初建maven传送门:https://blog.youkuaiyun.com/weixin_38310965/article/details/80729656
步骤:
1,添加pom依赖。
打开pom.xml,添加我们的依赖,直接把我的依赖粘贴,放到pom.xml的dependencies标签之间就好了。(我maven使用的是阿里的库)
依赖如下:
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<!--J2EE-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!--springframework-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>1.16.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<!--其他需要的包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
粘贴之后更新下会自动更新maven,如果还有飘红,就手动更新下。
2.添加框架支持
右键工程项目,选择Add Framework Support,如图:
勾选Spring 、SpringMVC项,并勾选Spring中的Create empty spring-config.xml项,如图:
完成之后,会发现工程WEB-INF中多了两个xml文件,如图:
3.完善我们的工程结构。
在src下建立main同级测试文件夹test,在main下建立webapp同级java文件夹,以及WEB-INF下建立statics、view文件夹以及它的子文件夹css、images、js,等,resources文件夹暂时可有可无,不太重要,如图:
此时,我们的Java文件夹路径是不能创建包的,我们需要对其进行设置。
使用快捷键 ctrl+alt+shift+s进入工程配置页面,选择moudles,对Java文件夹和test文件夹进行设置,Java文件夹对应Sources、test对应tests,如图:
之后就可以建相应的包啦。
4.通过以上三步我们的基本工程结构配置就完成了,接下来就是对SpringMVC的配置了,这里有两种方式供参考:a.基于xml的配置;b.基于java的配置。
a.基于xml的配置。
1)配置web.xml。目的:创建一个中央控制器。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<!--welcome pages-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--配置springmvc DispatcherServlet-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--配置dispatcher.xml作为mvc的配置文件-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--把applicationContext.xml加入到配置文件中-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
2)配置dispatcher-servlet.xml文件。目的:负责mvc的配置。
<?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--此文件负责整个mvc中的配置--> <!--启用spring的一些annotation --> <context:annotation-config/> <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 --> <mvc:annotation-driven/> <!--静态资源映射--> <!--本项目把静态资源放在了webapp的statics目录下,资源映射如下--> <mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/> <mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/> <mvc:resources mapping="/image/**" location="/WEB-INF/statics/image/"/> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP--> <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置--> <property name="suffix" value=".jsp"/> <property name="exposeContextBeansAsAttributes" value="true"/> </bean> <!-- 自动扫描装配 --> <context:component-scan base-package="example.controller"/> </beans>
3)配置applicationContext.xml文件。目的:管理一些非mvc组件配置。
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="example"/> </beans>
以上三个文件都可以直接复制使用。
b.基于java的配置。
1)添加一个config文件夹。目的:java的配置类。
2)删除web.xml、dispatcher-servlet.xml、applicationContext.xml三个文件,并在config文件夹下创建相应的类文件,如同:
具体文件内容如下:
WebXml类:对应web.xml;
public class WebXml extends AbstractAnnotationConfigDispatcherServletInitializer { /* <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> */ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[] {ApplicationContextXml.class}; } /* <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!--配置dispatcher.xml作为mvc的配置文件--> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> */ @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[] {DispatcherServletXml.class}; } /* <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> */ @Override protected String[] getServletMappings() { return new String[] {"/"}; } }
DispatcherServletXml类:对应dispatcher-servlet.xml;
@Configuration @EnableWebMvc @ComponentScan("web.com.cq.demo.controller") public class DispatcherServletXml extends WebMvcConfigurerAdapter{ /* <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置--> <property name="suffix" value=".jsp"/> <property name="exposeContextBeansAsAttributes" value="true"/> </bean> */ @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); super.configureDefaultServletHandling(configurer); } // 静态资源配置 /* <mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/> <mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/> <mvc:resources mapping="/images/**" location="/WEB-INF/statics/images/"/> */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/css/**").addResourceLocations("/WEB-INF/statics/css/"); registry.addResourceHandler("/js/**").addResourceLocations("/WEB-INF/statics/js/"); registry.addResourceHandler("/images/**").addResourceLocations("WEB-INF/statics/images/"); super.addResourceHandlers(registry); } }
ApplicationContextXml类:对应applicationContext.xml;
@Configuration @ComponentScan(basePackages = {"web"},excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class) }) public class ApplicationContextXml { }
代码直接粘贴可用。
5.测试。
在controller文件夹下创建一个TestController类。
@Controller @RequestMapping("/test") public class TestController { @RequestMapping("/test") public String test(Model model) { String img = "Hello World"; model.addAttribute("img",img); return "test"; } }
在views文件夹下创建test.jsp文件。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Test</title> </head> <body> 这是我的:${img} </body> </html>
配置加载Tomcat启动工程。
(配置Tomcat启动加载传送门:https://blog.youkuaiyun.com/weixin_38310965/article/details/80746139)
至此大功告成。
收工。