javascript
SpringMVC系列之基本配置
一、概述
Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基于請求驅動指的就是使用請求-響應模型。
1、什么是MVC?
模型-視圖-控制器(MVC)是一個以設計界面應用程序為基礎的設計模式。它主要通過分離模型、視圖及控制器在應用程序中的角色將業務邏輯從界面中解耦。通常,模型負責封裝應用程序數據在視圖層展示。視圖僅僅只是展示這些數據,不包含任何業務邏輯。控制器負責接收來自用戶的請求,并調用后臺服務來處理業務邏輯。處理后,后臺業務層可能會返回了一些數據在視圖層展示。控制器收集這些數據及準備模型在視圖層展示。MVC模式的核心思想是將業務邏輯從界面中分離出來,允許它們單獨改變而不會相互影響。
在Spring MVC中,模型通常由POJO對象組成,它在業務層中被處理,在持久層被持久化,視圖通常是用JSP標準標簽庫(JSTL)編寫的JSP模板,控制器部分是由dispatcher servlet負責。
2、Spring MVC架構
SpringMVC是一個基于請求驅動的Web框架,使用前端控制器模式來進行設計,在根據映射規則分發給相應的頁面控制器進行處理。其請求處理流程如下圖所示:
具體執行步驟如下:
1、客戶端發出一個HTTP請求,Web應用服務器接收到這個請求,如果匹配DispatcherServlet的請求映射路徑(web.xml中指定),Wen容器就會將該請求轉交給DispatcherServlet處理。
2、DispatcherServlet接收到這個請求后,將根據請求的信息和HandlerMapping的配置找到處理請求的處理器(Handler)。
3、得到Handler后,通過HandlerAdapter對Handler進行封裝,再以統一的適配器接口調用Handler。
4、處理器完成業務邏輯的處理后返回一個ModelAndView給DispatcherServlet,ModelAndView包含了視圖邏輯名和模型數據信息。
5、DispatcherServlet借由ViewResolver完成邏輯視圖名到真實視圖對象的解析工作。
6、當得到真實的視圖對象view后,DispatcherServlet就使用這個View對象對ModelAndView中模型數據進行渲染。
7、客戶端最終得到的響應消息可能是一個普通的HTML頁面,也可能是一個XML或者是JSON串。
二、基本配置(非注解)
1、新建工程,導入構建SpringMVC工程所需的jar包
2、配置前端控制器
在web.xml中配置前端控制器:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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"><display-name>day_0301_springMVC</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 前端控制器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器、適配器等等) 如果不配置contextConfigLocation,默認加載的是/WEB-INF/servlet名稱-servlet.xml--><init-param><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進行解析--><url-pattern>*.action</url-pattern></servlet-mapping> </web-app>3、配置處理器映射器
在classpath下的springmvc.xml中配置處理器映射器
<!-- 處理器映射器 ,將bean的name作為URL進行查找,需要在配置Handler時指定beanName(就是URL)--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
4、配置處理器適配器
<!-- 處理器適配器,所有的處理器適配器都實現HandlerAdapter接口 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>5、配置視圖解析器
<!-- 配置視圖解析器 解析jsp視圖,默認使用jstl標簽CLASSPATH下面要有jstl jar包 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>6、編寫Handler
需要實現Controller接口,才能由SimpleControllerHandlerAdapter適配器執行。
先要創建POJO對象:
public class Items {private String name;private int price;public String getName(){return name;}public void setName(String name){this.name = name;}public int getPrice(){return price;}public void setPrice(int price){this.price = price;} }創建Handler:
public class TestController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception{List<Items> itemsList=new ArrayList<Items>();Items items1=new Items();items1.setName("聯想筆記本");items1.setPrice(2500);Items items2=new Items();items2.setName("三星筆記本");items2.setPrice(5000);itemsList.add(items1);itemsList.add(items2);ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("itemsList", itemsList);modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;} }7、編寫視圖jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><%@ 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" %><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>查詢商品列表</title></head><body><form action="${pageContext.request.contentLength}/item/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></tr><c:forEach items="${itemsList}" var="item"><tr><td>${item.name }</td><td>${item.price }</td> <td><a href="${pageContext.request.contextPath}/item/editItem.action?name=${item.name}">修改</a></td></tr></c:forEach></table></form></body> </html>8、配置Handler
<bean name="/queryItems.action" class="com.demo.ssm.controller.TestController"></bean>到此,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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"><bean name="/queryItems.action" class="com.demo.ssm.controller.TestController"></bean><!-- 處理器適配器,所有的處理器適配器都實現HandlerAdapter接口 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean><!-- 處理器映射器 ,將bean的name作為URL進行查找,需要在配置Handler時指定beanName(就是URL)--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean><!-- 配置視圖解析器 解析jsp視圖,默認使用jstl標簽CLASSPATH下面要有jstl jar包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean> </beans>9、部署調式
訪問的地址:http://localhost:8080/day_0301_springMVC/queryItems.action
結果如下圖所示:
三、基于注解的映射器和適配器配置
再基于注解的映射器和適配器配置中,注解Handler的編寫如下:
@Controller public class TestController2 {@RequestMapping("/queryItemsTest")public ModelAndView queryItems(){List<Items> itemsList=new ArrayList<Items>();Items items1=new Items();items1.setName("聯想筆記本");items1.setPrice(2500);Items items2=new Items();items2.setName("apple");items2.setPrice(5000);itemsList.add(items1);itemsList.add(items2);ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("itemsList", itemsList);modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;} }springmv.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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"><bean class="com.demo.ssm.controller.TestController2"></bean><!-- 注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/><!-- 注解適配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/><!--使用下面的mvc:annotation-driven可以代替上面的注解映射器和注解適配器--><mvc:annotation-driven></mvc:annotation-driven><!-- <context:component-scan base-package="com.demo.ssm.controller"></context:component-scan> --><!-- 配置視圖解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean> </beans>部署后,訪問地址:http://localhost:8080/day_0301_springMVC/queryItemsTest.action,運行結果同上。
四、工程源代碼
點擊工程源代碼下載鏈接
轉載于:https://www.cnblogs.com/xujian2014/p/5235145.html
總結
以上是生活随笔為你收集整理的SpringMVC系列之基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 大学物理实验试卷1到8_南京理工大学大学
- 下一篇: 学生HTML个人网页作业作品下载 HTM
