SpringMVC(二):我的第一个SpringMVC程序HelloSpring
一、导包
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.23</version> </dependency> </dependencies>
这里我还导入了junit,是为了方便测试。
二、配置前端控制器 DispatcherServlet
修改web.xml
<!--配置DispatcherServlet,这是SpringMVC的核心;请求分发器,前端控制器--> <servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--DispatcherServlet要绑定Spring的配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动级别:1--> <load-on-startup>1</load-on-startup> </servlet> <!-- /:只匹配请求,不去匹配jsp页面 /*:包括jsp页面所有请求都匹配 --> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
我们可以看见上述内容中有一个DispatcherServlet绑定Spring配置文件,所以我们还需要一个Spring配置文件。
三、创建一个Spring配置文件
我的文件名为: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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--处理映射器--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--处理适配器--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--后缀--> <property name="suffix" value=".jsp"/> </bean> </beans>
在文件中,配置处理映射器HandlerMapping、处理适配器HandlerAdapter以及视图解析器ViewResolver。
视图解析器中前缀和后缀属性是为了简化在Controller中的路径的使用。
四、建立一个页面hello.jsp
这个页面建立在WEB-INF/jsp目录下。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>HELLO</title> </head> <body> ${message} </body> </html>
五、建立一个类HelloController,这个类需要实现Controller接口
package com.jms.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView modelAndView = new ModelAndView(); //业务代码 modelAndView.addObject("message", "HelloSpringMVC"); //跳转代码 modelAndView.setViewName("hello"); return modelAndView; } }
这个接口有一个handleRequest方法,需要返回一个ModelAndView。
addObject是添加了一个名为“message”的数据,setViewName则是设置跳转的路径,由于我们在视图解析器中设置了前后缀,所以实际路径为:localhost:8080/项目名/WEB-INF/jsp/hello.jsp。
六、将接口类注册到Spring容器中
配置springmvc-servlet.xml
<bean id="/hello" class="com.jms.controller.HelloController"/>
这里的id就是我们要请求的路径名。
七、运行Tomcat测试
请求hello没有问题。
(本文仅作个人学习记录用,如有纰漏敬请指正)