【圖書介紹】《Spring+Spring MVC+MyBatis從零開始學(視頻教學版)(第3版)》_spring+springmvc+mybatis從零開始 代碼、課件、教學視頻與相關軟件包下載-CSDN博客
《Spring+Spring MVC+MyBatis從零開始學(視頻教學版)(第3版)》(楊章偉,劉祥淼)【摘要 書評 試讀】- 京東圖書
編程與應用開發_夏天又到了的博客-CSDN博客
【圖書介紹】案例可借鑒的Spring應用開發書-CSDN博客
簡單數據綁定包括綁定默認數據類型、綁定簡單數據類型、綁定POJO類型、綁定包裝POJO等。
當前端請求的參數比較簡單時,可以在后臺方法的形參中直接使用Spring MVC提供的默認參數類型進行數據綁定。
常用的默認參數類型如下。
- HttpServletRequest:通過request對象獲取請求信息。
- HttpServletResponse:通過 response對象處理響應信息。
- HttpSession:通過session對象得到session中存儲的對象。
- Model/ModelMap:Model是一個接口,ModelMap是一個接口實現,作用是將Model數據填充到request域。
【示例12-1】以HttpServletRequest類型的使用為例進行演示說明,具體步驟如下:
?在IntelliJ IDEA中創建一個名為chapter12的Web項目,然后將Spring MVC相關JAR包添加到項目的lib目錄下,并發布到類路徑中。添加JAR包后的目錄如圖12.1所示。
圖12.1? Spring MVC相關JAR包
?在web.xml中配置Spring MVC的前端控制器等信息,如文件12.1所示。
文件12.1 ?web.xml
01 <?xml version="1.0" encoding="UTF-8"?>
02 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
03 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
04 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
05 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
06 id="WebApp_ID" version="4.0">
07 <servlet>
08 <!-- 配置前端過濾器 -->
09 <servlet-name>springmvc</servlet-name>
10 <servlet-class>org.srpingframework.web.servlet.DispatcherServlet
</servlet-class>
11 <!-- 初始化時加載配置文件 -->
12 <init-param>
13 <param-name>contextConfigLocation</param-name>
14 <param-value>classpath:springmvc-config.xml</param-value>
15 </init-param>
16 <!-- 表示容器在啟動時立即加載Servlet -->
17 <load-on-startup>1</load-on-startup>
18 </servlet>
19 <servlet-mapping>
20 <servlet-name>springmvc</servlet-name>
21 <url-pattern>/</url-pattern>
22 </servlet-mapping>
23 </web-app>
?在src目錄下創建Spring MVC的核心配置文件springmvc-config.xml,在該文件中配置組件掃描器和視圖解析器(參見注釋),如文件12.2所示。
文件12.2 ?springmvc-config.xml
01 <?xml version="1.0" encoding="UTF-8"?>
02 <beans xmlns="http://www.springframework.org/schema/beans"
03 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04 xmlns:context="http://www.springframework.org/schema/context"
05 xsi:schemaLocation="http://www.springframework.org/schema/beans
06 http://www.springframework.org/schema/beans/spring-beans.xsd
07 http://www.springframework.org/schema/context
08 http://www.springframework.org/schema/context/spring-context
.xsd">
09 <!--指定需要掃描的包 -->
10 <context:component-scan base-package="com.ssm.controller" />
11 <!-- 定義視圖解析器 -->
12 <bean id="viewResolver"
13 class="org.springframework.web.servlet.view.
InternalResourceViewResolver">
14 <!-- 設置前綴 -->
15 <property name="prefix" value="/WEB-INF/jsp/" />
16 <!-- 設置后綴 -->
17 <property name="suffix" value=".jsp" />
18 </bean>
19 </beans>
在src目錄下創建一個com.ssm.controller包,在該包下創建一個用于用戶操作的控制器類UserController,編寫后的代碼如文件12.3所示。
文件12.3 ?UserController.java
01 package com.ssm.controller;
02 import javax.servlet.http.HttpServletRequest;
03 import org.springframework.stereotype.Controller;
04 import org.springframework.web.bind.annotation.RequestMapping;
05 //@Controller注解
06 @Controller
07 public class UserController {
08 //@RequestMapping注解在方法上
09 @RequestMapping(value="/selectUser")
10 public String selectUser(HttpServletRequest request) {
11 //獲取請求地址中的參數id的值
12 String id=request.getParameter("id");
13 System.out.println("id="+id);
14 return "success";
15 }
16 }
在文件12.3中,使用注解方式定義了一個控制器類,同時定義了方法的訪問路徑。在方法參數中使用了HttpServletRequest類型,并通過該對象的getParameter()方法獲取了指定的參數。為了方便查看結果,將獲取的參數進行輸出打印,最后返回一個名為success的視圖,Spring MVC會通過視圖解析器在WEB-INF/jsp路徑下尋找success.jsp文件。
注意:后臺在編寫控制器類時,通常會根據需要操作的業務對控制器類進行規范命名。例如,如果要編寫一個對用戶操作的控制器類,可以將控制器類命名為UserController,然后在該控制器類中就可以編寫任何有關用戶操作的方法。
?在WEB-INF目錄下創建一個名為jsp的文件夾,然后在該文件夾中創建頁面文件success.jsp,該頁面只作為正確執行操作后的響應頁面,沒有其他業務邏輯,如文件12.4所示。
文件12.4 ?success.jsp
01 <%@ page language="java" contentType="text/html; charset=UTF-8"
02 pageEncoding="UTF-8"%>
03 <!DOCTYPE HTML>
04 <html>
05 <head>
06 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
07 <title>入門程序</title>
08 </head>
09 <body>
10 ok!,執行成功
11 </body>
12 </html>
將chapter12項目發布到Tomcat服務器中并啟動,在瀏覽器中訪問地址http://localhost:8080/chapter12_war_exploded/selectUser?id=1,其顯示效果如圖12.2所示。
圖12.2? 執行結果(success.jsp頁面)
此時的控制臺輸出信息如圖12.3所示。從結果中可以看出,后臺方法已從請求地址中正確地獲取到了id的參數信息,這說明使用默認的HttpServletRequest參數類型已經完成了數據綁定。
圖12.3? 運行結果