Spring MVC入门
注意此时的开发工具是IDEA!!!
spring MVC 入门
1、MVC模式与Spring MVC工作原理
①、MVC模式
MVC是Model、View和Controller的缩写,分别代表WEb程序中的3中职责。
Model:用于存储数据以及处理用户请求的业务逻辑。
View:向控制器提交数据,显示模型中的数据。
Controller:根据视图的提出的要求判断将请求和数据交给那个模型处理,将处理好的有关结果交给那个视图更新显示。
②、基于Servlet的MVC模式
模型:一个或多个JavaBean对象,用于存储数据和处理业务逻辑。
视图:一个或多个jsp页面,向控制器提交数据和为模型提供数据显示,JSP页面
主要使用HTML标记和JavaBean标记来显示数据。
控制器:一个或多个Servlet对象,根据视图的提交的请求进行控制,即将请求转发给
处理业务逻辑的JavaBean,并将处理的结果放在实体模型的JavaBean中,输给视图显示。
基于Servlet的MVC模式的流程图
③、Spring MVC工作原理
springmvc框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成。
1、客户端请求提交到DispatcherServlet
2、由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller
3、DispatcherServlet将请求提交到Controller
4、Controller调用业务逻辑处理后返回ModelAndView
5、Dispatcher寻找一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图
6、视图负责将结果显示到客户端。
④、spring MVC接口
上图所示包含4个springmvc接口,即DispatcherServlet、HandlerMappering、Controller和ViewResolver。
Spring MVC所有的请求都经过DispatcherServlet来统一发放,再DispatchServlet将请求分发给Controller之前需要
借助Spring MVC提供的HandlerMapping定位到具体的Controller。
HandlerMapping接口负责将完成客户请求到Controller映射。
Controller接口将处理用户请求,这和Java Servlet 扮演的角色是一致的。
ViewResolver接口在web应用中负责查询View对象,从而将相应结果渲染给客户。
2、第一个Spring MVC应用
可能遇到的问题:cannot resolve symbol‘servlet’
解决问题的地址:https://blog.csdn.net/houfeng30920/article/details/72843522
1、使用IDEA创建工程
后根据实际的情况建立工程
查看目录:
lib目录:
2、web.xml文件中部署DispatcherServlet
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"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置Dispatcher --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 表示再容器启动的时候加载Servlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!--处理请求的url--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
DispatcherServlet的Servlet对象springmvc初始化时将在应用程序的WEB-INF目录下查找配置文件
该配置文件的命名规则是:servletName-servlet.xml
springmvc配置文件可以放在应用程序的目录任何位置
但是需要使用<init-param>元素加载配置文件的位置
3、创建Web应用的首页
index.jsp
<%@ page pageEncoding="UTF-8" import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> 未注册的用户,请<a href="<%=request.getContextPath()%>/register">注册</a><br> 已注册的用户请<<a href="<%=request.getContextPath()%>/login">登陆</a> </body> </html>
4、创建Controller
在src目录下创建controller包以及两个控制器类
package 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 LoginController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { return new ModelAndView("/WEB-INF/jsp/login.jsp"); } }
package controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class RegisterController implements Controller { @Override public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { return new ModelAndView("/WEB-INF/jsp/register.jsp"); } }
5、创建spring mvc配置文件并配置Controller映射信息
dispatcher-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"> <!--Login控制器类,映射到 /login--> <bean name="/login" class="controller.LoginController"></bean> <!--register控制器类 ,映射到 /register--> <bean name="/register" class="controller.RegisterController"></bean> </beans>
6、跳转到的页面
一下两个页面都在WEB-INF下的jsp文件夹里。
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <b>登陆</b> </body> </html>
register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <b>注册</b> </body> </html>
7、运行测试:
点击注册:之后实现页面的跳转
点击登陆:之后实现页面的跳转