springmvc入門(1)

一.、springmvc框架
一、什麼是springmvc
springmvc是spring框架的一個模塊,springmvc和spring無需經過中間整合層進行整合。springmvc是一個基於mvc的web框架。
二、mvc在b/s系統下的應用
 mvc是一個設計模式,mvc在b/s系統 下的應用:
三、springmvc框架
第一步:發起請求到前端控制器(DispatcherServlet)
第二步:前端控制器請求HandlerMapping查找 Handler
         能夠根據xml配置、註解進行查找
第三步:處理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器調用處理器適配器去執行Handler
第五步:處理器適配器去執行Handler
第六步:Handler執行完成給適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回ModelAndView
         ModelAndView是springmvc框架的一個底層對象,包括 Model和view
第八步:前端控制器請求視圖解析器去進行視圖解析
         根據邏輯視圖名解析成真正的視圖(jsp)
第九步:視圖解析器向前端控制器返回View
第十步:前端控制器進行視圖渲染
         視圖渲染將模型數據(在ModelAndView對象中)填充到request域
第十一步:前端控制器向用戶響應結果
 
四、組件:
前端控制器DispatcherServlet(不須要程序員開發)。做用:接收請求,響應結果,至關於轉發器,中央處理器。有了DispatcherServlet減小了其它組件之間的耦合度。
處理器映射器HandlerMapping(不須要程序員開發)。做用:根據請求的url查找Handler
處理器適配器HandlerAdapter。做用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
處理器controller(須要程序員開發)注意:編寫controller時按照HandlerAdapter的要求去作,這樣適配器才能夠去正確執行Handler 
視圖解析器View resolver(不須要程序員開發)。做用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
視圖View(須要程序員開發jsp)。View是一個接口,實現類支持不一樣的View類型(jsp、freemarker、pdf...)
 
2、程序入門
1. 配置前端控制器,在web.xml中配置前端控制器
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 3   <display-name>springmvc</display-name>
 4   
 5   <!-- springmvc前端控制器 -->
 6   <servlet>
 7       <servlet-name>springmvc</servlet-name>
 8       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 9       <!-- contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器、適配器等等)
10       若是不配置contextConfigLocation,默認加載的是/WEB-INF/servlet名稱-serlvet.xml(springmvc-servlet.xml)
11        -->
12       <init-param>
13           <param-name>contextConfigLocation</param-name>
14           <param-value>classpath:springmvc.xml</param-value>
15       </init-param>
16   </servlet>
17   
18   <servlet-mapping>
19       <servlet-name>springmvc</servlet-name>
20       <!-- 
21       第一種:*.action,訪問以.action結尾 由DispatcherServlet進行解析
22       第二種:/,因此訪問的地址都由DispatcherServlet進行解析,對於靜態文件的解析須要配置不讓DispatcherServlet進行解析
23       使用此種方式能夠實現 RESTful風格的url
24       第三種:/*,這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時,
25       仍然會由DispatcherServlet解析jsp地址,不能根據jsp頁面找到handler,會報錯。
26        -->
27       <url-pattern>*.action</url-pattern>
28   </servlet-mapping>
29   
30   
31   <welcome-file-list>
32     <welcome-file>index.html</welcome-file>
33     <welcome-file>index.htm</welcome-file>
34     <welcome-file>index.jsp</welcome-file>
35     <welcome-file>default.html</welcome-file>
36     <welcome-file>default.htm</welcome-file>
37     <welcome-file>default.jsp</welcome-file>
38   </welcome-file-list>
39 </web-app>
View Code

二、配置處理器適配器,在classpath下的springmvc.xml中配置處理器適配器。html

1 <!-- 處理器適配器 全部處理器適配器都實現 HandlerAdapter接口 -->
2     <bean  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
View Code

三、開發controller程序,這裏使用的是靜態數據。下一篇和mybatis整合後將去數據庫查詢數據前端

 1 package com.zhang.controller;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 import org.springframework.web.servlet.ModelAndView;
10 import org.springframework.web.servlet.mvc.Controller;
11 
12 import com.zhang.domain.Items;
13 
14 public class ItemsController implements Controller {
15     @Override
16     public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
17         //調用service查找 數據庫,查詢商品列表,這裏使用靜態數據模擬
18         List<Items> itemsList = new ArrayList<Items>();
19         //向list中填充靜態數據
20         Items items_1 = new Items();
21         items_1.setName("聯想筆記本");
22         items_1.setPrice(6000f);
23         items_1.setDetail("ThinkPad T430 聯想筆記本電腦!");
24         Items items_2 = new Items();
25         items_2.setName("蘋果手機");
26         items_2.setPrice(5000f);
27         items_2.setDetail("iphone6蘋果手機!");
28         itemsList.add(items_1);
29         itemsList.add(items_2);
30         //返回ModelAndView
31         ModelAndView modelAndView =  new ModelAndView();
32         //至關 於request的setAttribut,在jsp頁面中經過itemsList取數據
33         modelAndView.addObject("itemsList", itemsList);
34         //指定視圖
35         modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
36         return modelAndView;
37     }
38 
39 }
View Code

四、配置處理器映射器,在classpath下的springmvc.xml中配置處理器映射器java

1 <!-- 配置Handler -->
2     <bean id="itemsController" name="/queryItems_test.action" class="com.zhang.controller.ItemsController" />    
3     <!-- 處理器映射器 將bean的name做爲url進行查找 ,須要在配置Handler時指定beanname(就是url) 全部的映射器都實現 HandlerMapping接口。-->
4     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
View Code

五、配置視圖解析器,須要配置解析jsp的視圖解析器。程序員

1 <!-- 視圖解析器解析jsp解析,默認使用jstl標籤,classpath下的得有jstl的包-->
2     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
View Code

六、JSP頁面web

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>查詢商品列表</title>
10 </head>
11 <body> 
12 <form action="${pageContext.request.contextPath }/item/queryItem.action" method="post">
13 查詢條件:
14 <table width="100%" border=1>
15 <tr>
16 <td><input type="submit" value="查詢"/></td>
17 </tr>
18 </table>
19 商品列表:
20 <table width="100%" border=1>
21 <tr>
22     <td>商品名稱</td>
23     <td>商品價格</td>
24     <td>生產日期</td>
25     <td>商品描述</td>
26     <td>操做</td>
27 </tr>
28 <c:forEach items="${itemsList }" var="item">
29 <tr>
30     <td>${item.name }</td>
31     <td>${item.price }</td>
32     <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
33     <td>${item.detail }</td>
34     <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td>
35 </tr>
36 </c:forEach>
37 </table>
38 </form>
39 </body>
40 </html>
View Code

七、測試,在瀏覽器中輸入地址:http://127.0.0.1:8080/springmvc//queryItems_test.action,顯示效果以下:spring

3、工程目錄結構:數據庫

資源下載連接:http://download.csdn.net/detail/u013865056/9907602設計模式

相關文章
相關標籤/搜索