SpringMvc如何學習框架技術? 就像如上的圖示同樣,先掌握新技術的體系流程圖。在快速弄明白程序執行流程後,在使用過程當中 瞭解細節。

image

 

如何學習框架技術?
就像如上的圖示同樣,先掌握新技術的體系流程圖。在快速弄明白程序執行流程後,在使用過程當中
瞭解細節。html

 

工做流程:java

1.客戶端發送請求
web

2.客戶端發送的請求到達服務器控制器  , 服務器控制器由 Servlet(DispatcherServlet)實現的,來完成請求的轉發
spring

3.該控制器(DispatcherServlet)調用了一個用於映射的類 HandlerMapping,該類用於將請求映射到對應的處理器來處理請求。
服務器

4.HandlerMapping 將請求映射到對應的處理器 Controller(至關於 Action) 在 Spring 當中若是寫一些處理器組件,通常實現 Controller 接口
mvc

5.在 Controller 中就能夠調用一些 Service 或 DAO 來進行數據操做
app

6.ModelAndView 用於存放從 DAO 中取出的數據,還能夠存放響應視圖的一些數據。框架


7.若是想將處理結果返回給用戶,那麼在 Spring 框架中還提供一個視圖組件 ViewResolver,
該組件根據 Controller 返回的標示,找到對應的試圖,將響應 response 返回給用戶jsp

 

 

DEMO:post

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.部署測試

相關文章
相關標籤/搜索