1. 程式人生 > 其它 >springMVC入門程式

springMVC入門程式

一、環境搭建

  

二、配置前端控制器

  在web.xml中配置前端控制器,前端控制器的本質是一個Servlet所以其配置方式,和Servlet一樣

  <!-- springmvc前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
<servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>

  這個的話,那處理器對映器、處理器介面卡、檢視解析器還都沒有呢,還是不能工作。

  <!-- springmvc前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name
> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- contextConfigLocation:配置springmvc要載入的元件(處理器對映器、處理器介面卡、檢視解析器。。。) contextConfigLocation:預設載入路徑:/WEB-INF/servlet-name-servlet.xml(springmvc-servlet.xml)
--> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- *.action:訪問以。action結尾的由DispatcherServlet解析 /:所有訪問地址都由DispatcherServlet解析,對於靜態檔案的解析需要配置不讓DispatcherServlet解析,測試方式可以實現RESTful風格url --> <url-pattern>*.action</url-pattern> </servlet-mapping>

三、springmvc.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" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
      http://www.springframework.org/schema/context   
      http://www.springframework.org/schema/context/spring-context-3.2.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    
    
</beans>

四、配置處理器對映器

  ①、有哪些處理器對映器

    

    內容如下:

# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.

org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
//處理器對映器
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
//處理器介面卡
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

  ②、配置處理器對映器,根據url獲取Handler

    <!-- 
        處理器對映器
        將bean的name作為url精選查詢
        如下:
        <bean name="/xxx.action" class="xxxxx.xxxController"/>
     -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

五、配置處理器介面卡

<!-- 
        處理器介面卡
        執行實現Controller的Handler
     -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

六、編寫Handler,並交給springmvc管理

//需要實現 controller介面,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter介面卡執行
public class ItemsController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        List<Items> itemsList=new ArrayList<Items>();
        
        Items items_1 = new Items();
        items_1.setName("筆記本");
        items_1.setPrice(6000f);
        items_1.setDetail("膝上型電腦!");
        
        Items items_2 = new Items();
        items_2.setName("手機");
        items_2.setPrice(5000f);
        items_2.setDetail("手機!");
        
        itemsList.add(items_1);
        itemsList.add(items_2);

        //返回ModelAndView
        ModelAndView modelAndView =  new ModelAndView();
        //相當 於request的setAttribut,在jsp頁面中通過itemsList取資料
        modelAndView.addObject("itemsList", itemsList);
        
        //指定檢視
        modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");

        return modelAndView;
    }

}

  將編寫Handler在spring容器載入,name為路徑方式字串

<bean name="/queryItem.action" class="com.xxx.springmvc.controller.ItemsController"/>

七、編寫檢視

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查詢商品列表</title>
</head>
<body> 
<form action="${pageContext.request.contextPath }/queryItem.action" method="post">
查詢條件:
<table width="100%" border=1>
<tr>
<td><input type="submit" value="查詢"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1>
<tr>
    <td>商品名稱</td>
    <td>商品價格</td>
    <td>生產日期</td>
    <td>商品描述</td>
    <td>操作</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
    <td>${item.name }</td>
    <td>${item.price }</td>
    <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
    <td>${item.detail }</td>
    
    <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td>

</tr>
</c:forEach>

</table>
</form>
</body>

</html>
View Code

八、配置檢視解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

九、釋出訪問:http://localhost:8080/02springmvc/queryItem.action

簡單的示例就完成了。

總結:

1、springmvc是基於servlet的,所以需要配置和servlet一致,配置前端控制器

2、處理器對映器根據url對應的bean name 查到對應的Handler

3、處理器介面卡執行所有實現Controller的Handler

3、Handler返回模型資料(資料和檢視名)

4、通過檢視解析器根據檢視名獲取檢視物件,後面操作就不贅述了