• SpringMvc如何学习框架技术? 就像如上的图示一样,先掌握新技术的体系流程图。在快速弄明白程序执行流程后,在使用过程中 了解细节。


    image

    如何学习框架技术?
    就像如上的图示一样,先掌握新技术的体系流程图。在快速弄明白程序执行流程后,在使用过程中
    了解细节。

    工作流程:

    1.客户端发送请求

    2.客户端发送的请求到达服务器控制器  , 服务器控制器由 Servlet(DispatcherServlet)实现的,来完成请求的转发

    3.该控制器(DispatcherServlet)调用了一个用于映射的类 HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。

    4.HandlerMapping 将请求映射到对应的处理器 Controller(相当于 Action) 在 Spring 当中如果写一些处理器组件,一般实现 Controller 接口

    5.在 Controller 中就可以调用一些 Service 或 DAO 来进行数据操作

    6.ModelAndView 用于存放从 DAO 中取出的数据,还可以存放响应视图的一些数据。


    7.如果想将处理结果返回给用户,那么在 Spring 框架中还提供一个视图组件 ViewResolver,
    该组件根据 Controller 返回的标示,找到对应的试图,将响应 response 返回给用户

    DEMO:

    1. 创建springMVC环境

    2. 在web.xml中配置中央控制器 DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>    
      <servlet>
              <servlet-name>springmvcExample</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:springMVC.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>springmvcExample</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    3.新建spring配置文件  springMVC.xml

    4.编写一个简单的页面. index.jsp, 及成功后跳转的页面WEB-INF/(success.jsp)

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
    <body style="font-size:30px">
    
        <form action="login.do" method="post">
            用户名:<input type="text" name="email"><br /> 
            密码:   <input type="text" name="password"><br />
             <input type="submit"value="登录">
        </form>
        <span>${msg}这个是登陆错误后返回的信息</span>
    </body>
    
    </html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'success.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
      </head>
      
      <body>
         <h2>   登陸成功! <%=request.getAttribute("msg") %></h2>
      </body>
    </html>

    5.编写LoginControl 等价于我们之前写的 LoginAction,handleRequest()相当于 execute()方法

    package com.control;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.ui.ModelMap;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class LoginControl implements Controller
    {
        public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception
        {
            ModelMap map = new ModelMap();
            
            String email = request.getParameter("email");
            String pwd = request.getParameter("password");
            if(email.equals("zkrui2008@163.com")&&pwd.equals("123456"))
            {
                map.put("msg", email);
                return new ModelAndView("success",map);
            }
            map.put("msg", "用戶名或密碼錯!");
            return  new ModelAndView("index",map);
            
            //默认是采用 dispatcher 方式跳转,重定向可以用下面的方式
            //return  new ModelAndView("redirect:/index.jsp",map);
        }
    
    }

    6.在 Spring 配置文件中,注入 bean(loginControl) ,从如上步骤中,我们已经完成了 Spring MVC 控制流程中的 DispatcherServlet、
    Controller、ModelAndView、View     还有 HandlerMapping、ViewResolver,它们不需要自己写,需要配置

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--共有方法,负责所有共有配置文件-->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <bean id="loginControl"  class="com.control.LoginControl"/>
    
    <!-- 配置HandlerMapping组件用于实现请求与处理器之间的映射 -->
    <bean id="urlMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="login.do">loginControl</prop>
            </props>
        </property>
    
    </bean>
    
    <!-- 定义ViewResolver组件, 实现根据视图标识获取JSP响应 -->
    <bean id="viewResolver"   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- View中用到的相关技术 -->
        <property name="viewClass"  value="org.springframework.web.servlet.view.JstlView"/>
        
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
        <!-- 前缀 -->
        <property name="prefix" value="/" />
    </bean>
    
    
    </beans>

    注意:viewResolver中 jsp 文件的名字,是根据我们在 LoginControl 中的具体业务返回的字符串决定
    “success”或者“login”

    如果响应的页面位于WEB-INF下则可以采用下面的方式配置:

    <!-- 后缀 --> <property name="suffix" value=".jsp"/>

    <!-- 前缀 --> <property name="prefix" value="WEB-INF/" />

    2.HandleMapping 组件有很多的实现技术,我们使用的是较为简单的  org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
    ViewResolver 组件也有很多的实现技术,我们使用  org.springframework.web.servlet.view.InternalResourceViewResolver
    此外,在 ViewResolver 组件中使用的主要解析技术是 JstlView       org.springframework.web.servlet.view.JstlView
    (以预防&&配合页面使用 jstl 标签的情况)

    7.部署测试

  • 相关阅读:
    PHP-------抽象和接口
    MySQL函数
    MySQL索引
    MySQL语法
    MySQL视图、事务
    最简洁粗暴版的虚拟用户配置FTP
    linux网络bond技术
    CentOS 7服务
    Nginx 基础
    shell 截取指定的字符串
  • 原文地址:https://www.cnblogs.com/david-rui/p/3634817.html
Copyright © 2020-2023  润新知