zoukankan      html  css  js  c++  java
  • 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、运行测试:

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

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

     

  • 相关阅读:
    SQL语句大全
    SQL SERVER 用sql语句将一列数据拼接成一个字符串
    常用 SQl 语句大全
    巧用一条SQL语句实现其它进制到十进制转换
    sql 2005
    sql convert(varchar(10),getdate(),120)
    sqlserver 日期函数
    转:DBCC CHECKDB 数据库或表修复
    Linux下使用SFTP命令
    mySQL 教程 第7章 存储过程和函数
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10240862.html
Copyright © 2011-2022 走看看