如何學習框架技術?
就像如上的圖示同樣,先掌握新技術的體系流程圖。在快速弄明白程序執行流程後,在使用過程當中
瞭解細節。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.部署測試