1.创建gradle-web项目,老哥在这里命名为study-springmvc
2.build.gradle配置
plugins {
id 'war'
}
group 'org.springframework.studymvc'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-context"))
compile(project(":spring-context-support"))
compile(project(":spring-tx"))
compile(project(":spring-aop"))
compile(project(":spring-webmvc"))
compile(project(":spring-web"))
compile group: 'taglibs', name: 'standard', version: '1.1.2'
compile group: 'javax.servlet', name: 'jstl', version: '1.2'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'asm', name: 'asm', version: '3.3.1'
runtime group: 'junit', name: 'junit', version: '4.12'
optional group: 'cglib', name: 'cglib', version: '2.2.2'
}
3.添加applicationContext.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-4.3.xsd">
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
InternalResourceViewResolver是一个辅助的bean,会在ModelAndView返回视图名称前加上prefix指定的资源,在加上suffix指定后缀,比如下面的UserController最后就会找/WEB-INF/jsp/userlist.jsp。
4.创建视图模型类model-User.java
/**
* @author 周宁
* @Date 2019-08-09 9:09
*/
public class User {
private String username;
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
5.创建UserController继承自AbstractController
/**
* @author 周宁
* @Date 2019-08-09 9:11
*/
public class UserController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<User> users = new ArrayList<User>();
User u1 = new User();
u1.setAge(25);
u1.setUsername("张帅");
User u2 = new User();
u2.setAge(26);
u2.setUsername("周宁");
users.add(u1);
users.add(u2);
return new ModelAndView("userlist","users",users);
}
}
ModelAndView构造函数
/**
* Convenient constructor to take a single model object.
* @param viewName 要呈现的视图名称,将由DispatcherServlet's ViewResolver解析
* @param modelName 传递给视图的模型对象名称,可以通过该名称访问咱们的数据
* @param modelObject 传递给视图的模型对象的内容
*/
public ModelAndView(String viewName, String modelName, Object modelObject) {
this.view = viewName;
addObject(modelName, modelObject);
}
6.创建applicationContext-web.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-4.3.xsd">
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/userlist.htm">userController</prop>
</props>
</property>
</bean>
<bean id="userController" class="org.springframework.studymvc.web.UserController"/>
</beans>
我们将userController对应的请求地址配置到了该文件中,后面访问http://ip:port/xx/userlist.htm就会找到咱们的UserController的handleRequestInternal方法,执行相关代码逻辑
7.创建userlist.jsp文件;放到/WEB-INF/jsp/文件夹下面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h2>this is a demo page</h2>
<c:forEach items="${users}" var="user">
<c:out value="${user.username}"/>
<c:out value="${user.age}"/>
</br>
</c:forEach>
8.web.xml配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!--使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.studymvc.servlet.UserServletContextListener</listener-class>
</listener>
<!--配置spring核心的配置文件谢谢-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:**/applicationContext*.xml</param-value>
</context-param>
<!--SpringMVC的前端控制器;spring使用该类拦截web请求做处理-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:**/applicationContext-web.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
9.配置tomcat
10.启动服务访问地址:http://localhost:8099/mvc/userlist.htm