Spring MVC学习
Spring MVC属于Spring FrameWork的后续产品,是Spring FrameWork的一部分,是基于Java实现MVC的轻量级Web框架,Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
- 官方文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html
- 参考视频:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂_哔哩哔哩_bilibili
- 项目完整代码参考:lexiaoyuan/SpringMVCStudy: My SpringMVC study notes (github.com)、SpringMVCStudy: 我的Spring MVC学习笔记 (gitee.com)
回顾Servlet
1. 测试环境
- 新建普通maven工程作为父工程,在父工程下导入依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</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>
- 添加web框架支持
- 父工程下新建module,并创建普通的Servlet类
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 获取前端参数
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//2. 调用业务层
//3. 视图转发或重定向
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- 新建在
web/WEB-INF
目录下新建jsp/test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
- 配置
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">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.springmvc.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
2. 安装Tomcat服务器
-
双击下载下来的.exe文件
-
Next
-
I Agree
-
Next
-
Next
-
等待安装完成
-
测试
浏览器输入:http://localhost:8080/,显示下图,说明安装成功。
如果没有显示,可以进到安装目录的bin目录下,双击startup.bat
。
双击后出现下图,先不要不关掉,再在浏览器中输入地址。
可能出现的问题:
- 出现中文乱码:
解决:打开安装目录的conf/logging.properties
文件
找到如下代码:
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
修改为:
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
保存,重新启动startup.bat
,即可。
3. IDEA中开启Tomcat
- 单击下面的
Add Configuration
点了
后,出现下图,选择到Tomcat的安装目录即可
4. 测试
在浏览器中输入:http://localhost:8080/hello,显示500
输入:http://localhost:8080/hello?method=add,显示:执行了add方法
输入:http://localhost:8080/hello?method=delete,显示:执行了delete方法