第一个SpringMVC应用
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个SpringMVC应用相关的知识,希望对你有一定的参考价值。
第一个SpringMVC应用
- MVC的思想是将一个应用分成三个部分,即Model,View,Controller
- 让三个部分以最低的耦合方式进行协同工作,从而提高应用的可扩展性和可维护性
- SpringMVC是一款优秀的基于MVC思想的应用框架,它是Spring提供的一个实现WebMVC设计模式的轻量型Web框架
- 模型:用于存储数据以及处理用户请求的业务逻辑
- 视图:向控制器提交数据,显示模型中的数据
- 控制器:根据视图提出的请求,判断将请求和数据交给哪个模型处理,将处理的结果集交给哪个模型显示.
- 基于servlet的MVC模式
- 模型:一个或者多个JavaBean对象,用于存储数据和处理业务逻辑。
- 视图:一个或者多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要主要使用html和JavaBean来标记显示数据
- 控制器:一个或者多个servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的JavaBean,并将结果储存到实体模型JavaBean中,将结果输出给视图显示
- SpringMVC工作原理
- SpringMVC框架是高度可配置的,包含多种视图技术,常用的视图技术是JSP
- SpringMVC的框架主要由DispatcherServlet,处理器映射,控制器,视图解析器,视图组成,SpringMVC的工作流程如下:
- 1-客户端请求提交到DispatcherServlet
- 2-由DispatcherServlet控制器寻找一个或者多个HandlerMapping,找到处理请求的Controller
- 3-DispatcherServlet将请求提交到Controller
- 4-Controller调用业务逻辑处理后返回ModelAndView
- 5-DispatcherServlet寻找一个或者多个视图解析器ViewResolver,找到ModelAndView指定的视图
- 6-视图负责将结果显示到客户端。
下面演示第一个SpringMVC应用
1-使用IDEA创建web应用ch9,在该应用的WEB-INF建立目录lib,在该目录中导入相关jar包,并把jar包添加为库项目。
2-在web.xml文件中部署DispatcherServlet,代码如下:
<?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"
id = "WebApp_ID" version="4.0">
<!--部署DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
<!--表示容器启动时加载的servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--任意的请求都通过DispatcherServlet-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3-在web目录下的index.jsp文件中创建web应用首页
<%--
Created by IntelliJ IDEA.
User: nuist__NJUPT
Date: 2021/8/5
Time: 20:03
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
未注册的用户,请<a href="${pageContext.request.contextPath}/register">注册</a>!<br>
已注册的用户,去<a href="${pageContext.request.contextPath}/login">登录</a>!
</body>
</html>
4-在src目录下创建controller包,在该包中创建RegisterController和LoginController两个控制器类
RegisterController类:
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 RegisterController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
return new ModelAndView("register") ;
}
}
LoginController类:
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 LoginController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
return new ModelAndView("login") ;
}
}
5-在WEB-INF目录下创建名为springmvc-servlet.xml的配置文件,并配置Controller映射信息,同时配置视图解析器,配置前缀和后缀的两个属性,控制器的视图路径上会自动加上前缀和后缀。
<?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">
<!--LoginController控制器类映射到/login-->
<bean name = "/login" class = "controller.LoginController"/>
<!--RegisterController控制器类映射到/register-->
<bean name = "/register" class = "controller.RegisterController"/>
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id = "internalResourceViewResolver">
<!--前缀-->
<property name = "prefix" value = "/WEB-INF/jsp/"/>
<!--后缀-->
<property name = "suffix" value = ".jsp"/>
</bean>
</beans>
6-在WEB-INF目录下创建jsp目录,在该目录中创建注册视图register.jsp和登录视图login.jsp。
register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>用户注册</title>
</head>
<body>
注册页面
</body>
</html>
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>用户登录</title>
</head>
<body>
登录页面
</body>
</html>
7-发布并运行SpringMVC应用,运行tomcat,结果如下:
当用户点击“注册”超链接时候,根据springmvc-servlet.xml文件的映射请求转发给RegisterController控制器处理,然后根据视图解析器解析的路径跳转到/WEB-INF/jsp下的register.jsp视图,同理,当点击“登录”超链接时候,控制器处理后将跳转到
/WEB-INF/jsp下的login.jsp视图。
以上是关于第一个SpringMVC应用的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC与struts2区别和第一个springMVC应用
当我切换到包含片段的活动时应用程序崩溃(二进制 XML 文件第 10 行:二进制 XML 文件第 10 行:膨胀类片段时出错)