日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC 基础注解之@RequestMapping、@Controller、(二)

發布時間:2025/7/14 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC 基础注解之@RequestMapping、@Controller、(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我現在學的是spring4.2

今天主要學習了Spring MVC注解?

引入注解可以減少我們的代碼量,優化我們的代碼。

@Controller:用于標識是處理器類;

@RequestMapping:請求到處理器功能方法的映射規則;

還是以示例來解釋說明

?

1 創建springAnnotation02項目,導入jar包。

? ?這里的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_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>springmvc01</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>springAnnotation</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- 默認情況下:DispatcherServlet會尋找WEB-INF下,命名規范為[servlet-name]-servlet.xml文件。如:在上例中,它就會找/WEB-INF/spring-servlet.xml如果需要修改,需要在web.xml中的<servlet>標記中增加 <init-param>。。。 </init-param>:--><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/springAnnotation-servlet.xml</param-value></init-param>

<!-- load-on-startup:表示啟動容器時初始化該Servlet; --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springAnnotation</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><!-- 動態設置項目的運行路徑 --><context-param><param-name>webAppRootKey</param-name><param-value>spring.root</param-value></context-param><!-- 加載LOG4J --><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/log4j.xml</param-value></context-param><context-param><param-name>log4jRefreshInterval</param-name><param-value>60000</param-value></context-param><!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter 用于解決POST方式造成的中文亂碼問題 --> <filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 啟動log4j日志管理 --><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener> </web-app>

?

由于要使用SpringMVC注解,所以springAnnotation-servlet.xml文件需要增加springmvc的標記命名空間。 未使用SpringMVC注解時: 1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xsi:schemaLocation= 5 "http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-3.0.xsd">

?修改過后的springAnnotation-servlet.xml。

?

<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.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

?

?

使用Spring mvc注解時一個完整的springAnnotation-servlet.xml配置如下:

?

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation= 7 "http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 12 13 <!--開啟注解 --> 14 <mvc:annotation-driven /> 15 16 <!--啟用自動掃描 --> 17 <context:component-scan base-package="com.cy.springannotation.controller" /> 18 19 <!--配置視圖解析器 --> 20 <!-- ViewResolver 視圖解析器 用于將返回的ModelAndView對象進行分離 21 InternalResourceViewResolver:用于支持Servlet、JSP視圖解析; 22 viewClass:JstlView表示JSP模板頁面需要使用JSTL標簽庫,classpath中必須包含jstl的相關jar包; 23 prefix和suffix:查找視圖頁面的前綴和后綴(前綴[邏輯視圖名]后綴), 24 比如傳進來的邏輯視圖名為WEB-INF/jsp/hello,則該該jsp視圖頁面應該存放在“WEB-INF/jsp/hello.jsp”; --> 25 26 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 27 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> 28 <property name="prefix" value="/"></property> <!-- 我這里的視圖直接放在WebRoot下的 --> 29 <property name="suffix" value=".jsp"></property> 30 </bean> 31 32 <!-- 為何不配置HandlerMapping?因為基于注解時,會自動使用DefaultAnnotationHandlerMapping --> 33 34 </beans>

?

? ? 接下來,我們完成一個最簡單的通過控制實現頁面間的跳轉。

? 一個有提交的頁面

1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>登錄頁面</title> 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <body> 26 <form action="login.do" method="post"> 27 <table> 28 <tr> 29 <td>用戶名:</td> 30 <td><input type="text" name="username"/></td> 31 </tr> 32 <tr> 33 <td>班級</td> 34 <td><input type="text" name="clazz"/></td> 35 </tr> 36 <tr> 37 <td colspan="2"> <input type="submit" value="提交"/> </td> 38 </tr> 39 </table> 40 </form> 41 </body> 42 </html>

?

控制器

??

1 package com.cy.springannotation.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 @Controller // @Controller告知Spring容器這是一個控制器組件 7 public class LoginController { 8 @RequestMapping("/login.do") // @RequestMapping告知該方法是針對/login.do請求的處理方法 9 public String login(String username){ 10 System.out.println(username); 11 return "index"; // 返回的字符串被當做ViewName 12 13 14 } 15 }

?

以上的代碼就可以進行一個簡單的頁面跳轉。

?

接下來進一步了解@RequestMapping的特性

1、可以被配置在控制器類名上。 如: 1 @Controller 2 @RequestMapping("/test") 3 public class login.doController { 4 5 @RequestMapping("/login.do") 6 public String login(){ 7 return "index"; 8 } 9 } 10 11 //此時代表請求該方法的路徑是:/test/login.spring

?

2、三個常用屬性:value,params,method 2-1、value必填屬性,代表請求的url,支持模糊配置。(value字可以省略,但是屬性值必須填)

@RequestMapping(value=“/users/**”) ??匹配“/users/abc/abc”;

@RequestMapping(value="/product?")? ?匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;

@RequestMapping(value="/product*")?? 匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;?

@RequestMapping(value="/product/*")?? 匹配“/product/abc”,但不匹配“/productabc”;

? ?2-2、params可選屬性,代表對請求參數進行過濾

@RequestMapping(value="/login.do",params="flag") ??代表請求中必須要有名為flag的提交項?

@RequestMapping(value="/login.do",params="!flag") ?代表請求中不能有名為flag的提交項

@RequestMapping(value="/login.do",params="flag=hello")?代表請求中必須有名為flag的提交項,且值為hello

@RequestMapping(value="/login.do",params="flag!=hello")?代表請求中如果有名為flag的提交項,其值不能為hello

@RequestMapping(value="/login.do",params={"flag1","flag2=hello"})代表請求中必須有名為flag1的提交項,同時必須有名為flag2的提交項,且flag2的值必須為hello

2-3、method可選屬性,代表請求方式

@RequestMapping(value="/login.do",method=RequestMethod.POST)

@RequestMapping(value="/login.do",method=RequestMethod.GET)

@RequestMapping(value="/login.do", method= {RequestMethod.POST, RequestMethod.GET}"

接下來是:請求處理方法可接收參數

?

?

?

?

總結

以上是生活随笔為你收集整理的Spring MVC 基础注解之@RequestMapping、@Controller、(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。