Spring MVC框架
是Spring
提供的一个强大而灵活的WEB框架(Struts2框架也是WEB框架)。借助于注解,Spring MVC
提供了POJO
(又称为enitity
实体、model
模型)的开发模式,使得controller
控制器的开发和测试更加简单。这些controller
控制器一般不直接处理请求,而是将其委托给Spring
上下文中的其他bean
,通过Spring
的依赖注入功能,这些bean
被注入到控制器中。
Spring MVC
主要由DispatcherServlet
、处理器映射【找控制器】、适配器【调用控制器的方法】、控制器【业务】、视图解析器、视图组成。
下面将演示如何在项目中配置SpringMVC
框架,但是由于SpringMVC
一般不单独使用,如上介绍,SpringMVC
需要配合Spring
框架,因此你首先需要掌握一定的Spring
框架的使用。
1、创建一个普通的Java Web项目
2、导入Spring、SpringMVC框架依赖
①、在web/WEB-INF
目录下创建lib文件夹
②、复制Spring、SpringMVC的依赖到项目lib文件夹
Spring框架支持包下载地址:https://repo.spring.io/release/org/springframework/spring/
③、复制Spring AOP依赖到项目lib文件夹
④、复制log4j依赖到项目lib文件夹
⑤、复制Junit测试依赖到项目lib文件夹
3、编写配置文件
①、在web/WEB-INF
目录下创建文件DispatcherServlet-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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 1. 配置处理器映射,spring mvc默认的处理器映射器
BeanNameUrlHandlerMapping:根据bean的name属性的url去找handlerController -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 2. 配置处理器适配置器执行Controller -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 3.配置一个控制器 -->
<bean name="/user.do" class="cn.hestyle.demo.web.controller.UserController"/>
<!-- 4.配置spring mvc视图解析器
视图解析器解析的视图路径为:前缀 + modelAndView + 后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
②、在src目录下创建文件log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
③、修改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_4_0.xsd"
version="4.0">
<!-- 配置spring mvc DispatcherServlet 拦截器 DispatcherServlet -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4、编写Controller
控制器
package cn.hestyle.demo.web.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* description: UserController控制器
*
* @author hestyle
* @version 1.0
* @className springmvc_demo_01->UserController
* @date 2020-01-27 16:39
**/
public class UserController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//新建一个视图,关联/WEB-INF/views(前缀) /user/userList .jsp后缀
ModelAndView modelAndView = new ModelAndView("/user/userList");
//在视图中放置一个object
modelAndView.addObject("username", "hestyle");
return modelAndView;
}
}
5、编写视图(Jsp)
<%--
Created by IntelliJ IDEA.
User: hestyle
Date: 2020/1/27
Time: 16:42
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户列表</title>
</head>
<body>
用户列表:<br>
<!-- 使用el表达式取出username -->
${username}
</body>
</html>
6、运行项目,访问/user.do
控制台输出的日志信息:
响应过程大致如下:
上面是通过DispatcherServlet-servlet.xml
文件配置bean,配置起来比较复杂,目前比较普遍使用的方法是注解配置,比较便捷。
①、修改DispatcherServlet-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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 1.配置注解扫描位置 -->
<context:component-scan base-package="cn.hestyle.demo.web.controller"/>
<!-- 2. 配置处理器映射,通过注解来查找 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 3.配置注解处理适配器来执行控制器的方法 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 配置spring mvc视图解析器
视图解析器解析的视图路径为:前缀 + modelAndView + 后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
②、修改UserController类文件
package cn.hestyle.demo.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* description: UserController控制器
*
* @author hestyle
* @version 1.0
* @className springmvc_demo_01->UserController
* @date 2020-01-27 16:39
**/
@Controller
@RequestMapping("user")
public class UserController {
//@Controller注解的作用是声明UserController是一个控制器
//@RequestMapping("user")注解的作用是,设置控制器的根路径
@RequestMapping("list1.do")
public String list1(Model model){
//@RequestMapping("list1.do")注解的作用是申明list1方法处理 /user/list1.do的访问请求
//model的作用是往jsp传值
model.addAttribute("username", "hestyle_list1");
return "/user/userList";
}
@RequestMapping("list2.do")
public String list2(Model model){
//@RequestMapping("list2.do")注解的作用是申明list2方法处理 /user/list2.do的访问请求
//model的作用是往jsp传值
model.addAttribute("username", "hestyle_list2");
return "/user/userList";
}
}
③、重启项目,分别访问/user/list1.do
、/user/list2.do
cn.hestyle.demo.web.controller
包中可以放置多个controller
,每个controller
可以声明多个方法,而不用去修改DispatcherServlet-servlet.xml
配置文件,只需要在controller头部添加几个注解即可,可以说是简化了配置过程。
以上就是SpringMVC
框架之创建第一个项目的主要内容,喜欢的可以点个赞哟~