1. 配置项目
新建IDEA 的一个java Maven项目,删除src文件夹(为了应用多模块开发)。
然后导入依赖项,pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>b_spring_mvc</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>springmvc_1_annotation</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</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>
</dependencies>
</project>
2 新建模块
添加Web 依赖
然后就会在模块内部添加了一个web
文件夹,打开web/WEB-INF/web.xml
文件。
3 配置Servlet
在web/WEB-INF/web.xml
文件中配置Servlet的解释器。
<?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_4_0.xsd"
version="4.0">
<!-- 把解释器配置成我们自己定义的 Spring MVC 的调度器 DispatcherServlet-->
<servlet-mapping>
<servlet-name>my_servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 我们定义的-->
<servlet>
<servlet-name>my_servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--设置 Spring 配置文件,这个文件中配置我们的Bean-->
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--设置启动等级 为一级:随服务器一起启动难-->
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
4 配置 Spring
根据我们之前设置的<param-value>classpath:springmvc-servlet.xml</param-value>
,创建一个对应的文件src/main/resources/springmvc-servlet.xml
,在该文件中添加:
<?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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--设置Http请求的Handler为默认的Handler DefaultServletHttpRequestHandler -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
<!--可扫描到的Bean的位置,保证这个目录下的注解Bean可以被扫描到-->
<context:component-scan base-package="com.thriver.controller" />
<!--视图解析器,用于解析渲染Controller传回来的ViewAndModel -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
5 写一个控制器示例
Controller控制器是真正对客户请求作出相应的地方。在src/main/java/com/thriver/controller目录下新建一个HelloController.java类,写入:
@Controller
public class HelloController {
// 此注解表明:这个函数相应一个"/hello"Handler类型的请求,相当于xml配置的一个Bean
@RequestMapping("/hello")
String gethello(Model model){
model.addAttribute("msg","sanchuan");
return "hello";
}
}
6 部署Tomcat
首先下载一个Tomcat[https://tomcat.apache.org/],然后在IDEA中绑定这个Tomcat,在IDEA右上角打开Edit Configurations
选择Tomcat的配置模板:
然后配置Tomcat服务器的位置:
7 部署程序到Tomcat服务器
把我们刚才写的SpringMVC的代码配置进TomCat,也是在之前的位置:
把访问的包名称改为"/",这样就可以直接访问http://localhost:8080/hello
,否则就要
8 把运行程序依赖的库打包进Tomcat
如果不把依赖的库打包进去,运行会出错的。
9 运行
点集IDEA右上角的运行按钮,程序就直接部署在Tomcat服务器中,并启动服务器。
浏览器输入http://localhost:8080/hello
就可以看到控制器代码中输出的结果:
“你好 sanchuan”