免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SpringMVC_使用

1.@RequestMapping  用法 

SpringMVC中,@RequestMapping用來處理請求,比如XXX.do 
 

@RequestMapping("/aaa")//類級別,可以不需要,如果要了,下面所有的請求路徑前都需要加入/aaa
public class ccccontroller{

@RequestMapping(
"/bbb")
//方法級別,必須有,決定這個方法處理哪個請求,如果有類級別 /aaa/bbb
public String xxx()
{
//如果沒有類級別的就直接請求/bbb
return;
}
}
  
2:接收帶參數(shù)的請求,接收用戶請求參數(shù)值 

請求1: /test/start.do?name=zhangsan 
請求2: /test/start/zhangsan.do 

采用 URL模板 @RequestMapping("/start/{name}") //這個name 隨便啥都可以
 包含多個  @RequestMapping ("/start/{name}/{age}") 

3:不同請求方法,用不同處理方法   get  post 

   @RequestMapping (value="/start" ,method=RequestMethod.GET)//處理post 就換成 POST 

另外,如果Servlet想要做到/test/start/zhangsan.do這種請求的話需要 URL 重寫才能做到,或者用 /start/* 作為 Servlet 請求控制器,在其中進行截取和判斷。 
第二種方法:自己寫一個 URL 重寫的 Filter 
第三種方法:使用現(xiàn)成的 urlrewriter 工具 
第四種方法:使用 Web 服務(wù)器的 URL 重寫功能
public String start(@PathVariable("name") string name){ //和上面的對應(yīng)
return ;//方法體里面就可以直接獲得參數(shù)
}

 
Servlet中用Filter重寫示例 
web.xml中: 
 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns
=" http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
=" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=" http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<servlet>
<servlet-name>Action</servlet-name>
<servlet-class>com.bao.servlet.Action</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Action</servlet-name>
<url-pattern>/Action</url-pattern>
</servlet-mapping>

<filter>
<filter-name>action_name</filter-name>
<filter-class>com.bao.filter.ActionNameFilter</filter-class>
<init-param>
<param-name>pattern</param-name>
<param-value>/action/[^/]+</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>action_name</filter-name>
<url-pattern>/action/*</url-pattern>
</filter-mapping>
</web-app>

controller接收參數(shù)的使用

springmvc提供了@RequestParam注釋幫助我們獲取參數(shù)。

用法@RequestParam("接收的參數(shù)名")

例如:

@RequestMapping(params="servlet=login")
public String login(@RequestParam("username")String username,@RequestParam("password")String password,HttpServletRequest request,ModelMap map){
//處理登錄邏輯,省略
return "success";
}

當(dāng)客戶端的URL提交了username參數(shù),password參數(shù),那么我們的Controller就可以接收并處理了。

要注意,提交的username參數(shù)和password參數(shù)不可以是null,即一定要傳這兩個參數(shù),不然會拋異常。

另外,@RequestParam可以省略參數(shù)名,那么就會以它注釋的變量名作為參數(shù)名。

 

視圖名的確定。

spring mvc可以通過可以通過多種方式確定視圖名,在前面的例子中,方法無返回值,視圖名根據(jù)請求參數(shù)確定。Controller方法還是返回一個String類型的值作為視圖名,如:

@RequestMapping("edit")

    public void edit(@RequestParam int id) {...}

則返回的視圖為../edit.jsp

使用過低版本 Spring MVC 的讀者都知道:當(dāng)創(chuàng)建一個 Controller 時,我們需要直接或間接地實現(xiàn) org.springframework.web.servlet.mvc.Controller 接口。一般情況下,我們是通過繼承 SimpleFormController 或 MultiActionController 來定義自己的 Controller 的。在定義 Controller 后,一個重要的事件是在 Spring MVC 的配置文件中通過 HandlerMapping 定義請求和控制器的映射關(guān)系,以便將兩者關(guān)聯(lián)起來。

來看一下基于注解的 Controller 是如何定義做到這一點的,下面是使用注解的 BbtForumController:

package com.baobaotao.web;
import com.baobaotao.service.BbtForumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.Collection;
@Controller
//<——①
@RequestMapping("/forum.do")
public class BbtForumController {
@Autowired
private BbtForumService bbtForumService;
@RequestMapping
//<——②
public String listAllBoard() {
bbtForumService.getAllBoard();
System.out.println(
"call listAllBoard method.");
return "listBoard";
}
}

從上面代碼中,我們可以看出 BbtForumController 和一般的類并沒有區(qū)別,它沒有實現(xiàn)任何特殊的接口,因而是一個地道的 POJO。讓這個 POJO 與眾不同的魔棒就是 Spring MVC 的注解!

在 ① 處使用了兩個注解,分別是 @Controller 和 @RequestMapping。在“使用 Spring 2.5 基于注解驅(qū)動的 IoC”這篇文章里,筆者曾經(jīng)指出過 @Controller、@Service 以及 @Repository 和 @Component 注解的作用是等價的:將一個類成為 Spring 容器的 Bean。由于 Spring MVC 的 Controller 必須事先是一個 Bean,所以 @Controller 注解是不可缺少的。

真正讓 BbtForumController 具備 Spring MVC Controller 功能的是 @RequestMapping 這個注解。@RequestMapping 可以標注在類定義處,將 Controller 和特定請求關(guān)聯(lián)起來;還可以標注在方法簽名處,以便進一步對請求進行分流。在 ① 處,我們讓 BbtForumController 關(guān)聯(lián)“/forum.do”的請求,而 ② 處,我們具體地指定 listAllBoard() 方法來處理請求。所以在類聲明處標注的 @RequestMapping 相當(dāng)于讓 POJO 實現(xiàn)了 Controller 接口,而在方法定義處的 @RequestMapping 相當(dāng)于讓 POJO 擴展 Spring 預(yù)定義的 Controller(如 SimpleFormController 等)。

為了讓基于注解的 Spring MVC 真正工作起來,需要在 Spring MVC 對應(yīng)的 xxx-servlet.xml 配置文件中做一些手腳。在此之前,還是先來看一下 web.xml 的配置吧:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Spring Annotation MVC Sample</display-name>
<!-- Spring 服務(wù)層的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!-- Spring 容器啟動監(jiān)聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Spring MVC 的Servlet,它將加載WEB-INF/annomvc-servlet.xml 的
配置文件,以啟動Spring MVC模塊
-->
<servlet>
<servlet-name>annomvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>annomvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

web.xml 中定義了一個名為 annomvc 的 Spring MVC 模塊,按照 Spring MVC 的契約,需要在 WEB-INF/annomvc-servlet.xml 配置文件中定義 Spring MVC 模塊的具體配置。annomvc-servlet.xml 的配置內(nèi)容如下所示:

<?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:p
="http://www.springframework.org/schema/p"
xmlns:context
="http://www.springframework.org/schema/context"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
>

<!-- ①:對web包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 -->
<context:component-scan base-package="com.baobaotao.web"/>
<!-- ②:啟動Spring MVC的注解功能,完成請求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.
AnnotationMethodHandlerAdapter"
/>
<!-- ③:對模型視圖名稱的解析,即在模型視圖名稱添加前后綴 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix
="/WEB-INF/jsp/" p:suffix=".jsp"/>
</beans>

因為 Spring 所有功能都在 Bean 的基礎(chǔ)上演化而來,所以必須事先將 Controller 變成 Bean,這是通過在類中標注 @Controller 并在 annomvc-servlet.xml 中啟用組件掃描機制來完成的,如 ① 所示。

在 ② 處,配置了一個 AnnotationMethodHandlerAdapter,它負責(zé)根據(jù) Bean 中的 Spring MVC 注解對 Bean 進行加工處理,使這些 Bean 變成控制器并映射特定的 URL 請求。

而 ③ 處的工作是定義模型視圖名稱的解析規(guī)則,這里我們使用了 Spring 2.5 的特殊命名空間,即 p 命名空間,它將原先需要通過 <property> 元素配置的內(nèi)容轉(zhuǎn)化為 <bean> 屬性配置,在一定程度上簡化了 <bean> 的配置。

啟動 Tomcat,發(fā)送 http://localhost/forum.do URL 請求,BbtForumController 的 listAllBoard() 方法將響應(yīng)這個請求,并轉(zhuǎn)向 WEB-INF/jsp/listBoard.jsp 的視圖頁面。

在controller中,如果在某方法中需要重定向則 return "redirect:xx.html"(與類的RequestMapping的值在同一個路徑下)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring3 MVC (一)----注解基本配置及@Controller和@Reques...
Spring MVC【入門】就這一篇!
Spring 4 官方文檔學(xué)習(xí)(十一)Web MVC 框架
基于注解的 Spring MVC 簡單入門
springmvc使用和經(jīng)驗總結(jié)(長沙師說網(wǎng)絡(luò)科技有限公司)
Spring MVC 注解開發(fā)備忘錄
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服