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、运行测试:

 

点击注册:之后实现页面的跳转

点击登陆:之后实现页面的跳转

 

 

posted @ 2019-01-16 18:35  MrChengs  阅读(448)  评论(0编辑  收藏  举报