欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC響應(yīng)處理詳細(xì)解讀

 更新時間:2022年07月28日 08:41:08   作者:·~簡單就好  
Spring?MVC?是?Spring?提供的一個基于?MVC?設(shè)計(jì)模式的輕量級?Web?開發(fā)框架,本質(zhì)上相當(dāng)于?Servlet,Spring?MVC?角色劃分清晰,分工明細(xì),本章來講解SpringMVC數(shù)據(jù)響應(yīng)

數(shù)據(jù)處理及跳轉(zhuǎn)

1.結(jié)果跳轉(zhuǎn)方式

①.ModelAndView

設(shè)置ModelAndView對象 , 根據(jù)view的名稱 , 和視圖解析器跳到指定的頁面

<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/html/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5"/>
</bean>

對應(yīng)的controller類:

/**
 * 返回ModelAndView對象的方式
 * @return
 */
@RequestMapping("/save3")
public ModelAndView save3(){
    System.out.println("執(zhí)行了...");
    // 創(chuàng)建mv對象
    ModelAndView mv = new ModelAndView();
    // 把一些數(shù)據(jù),存儲到mv對象中
    mv.addObject("msg","用戶名或者密碼已經(jīng)存在");
    // 設(shè)置邏輯視圖的名稱
    mv.setViewName("suc");
    return mv;
}

②.ServletAPI:請求轉(zhuǎn)發(fā)和重定向

通過設(shè)置ServletAPI , 不需要視圖解析器 .

1、通過HttpServletResponse進(jìn)行輸出

2、通過HttpServletResponse實(shí)現(xiàn)重定向

3、通過HttpServletResponse實(shí)現(xiàn)請求轉(zhuǎn)發(fā)

(1)請求轉(zhuǎn)發(fā)

? 1、是服務(wù)器端的行為

? 2、請求地址不發(fā)生改變,用戶從始至終都是同一個請求

? 3、request數(shù)據(jù)在servlet共享,因?yàn)閺氖贾两K都是同一個請求

? 4、通過setAttribute進(jìn)行數(shù)據(jù)傳遞,getAttribute進(jìn)行數(shù)據(jù)接收

(2)重定向

? 1.服務(wù)器端指導(dǎo),客服端行為的行為

? 2.兩次request請求

? 3.用戶瀏覽器訪問的地址欄也會發(fā)生變化

? 4.重定向可以解決跨域問題

? 跨域:我們當(dāng)前訪問的地址不是我們項(xiàng)目中的地址

    /**
     * 請求轉(zhuǎn)發(fā):
     * @param request
     * @param response
     * @throws IOException
     * @throws ServletException
     */
    @RequestMapping("/test1")
    public void test1(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        System.out.println("test1=" + request.getParameter("name"));
        request.setAttribute("msg", "你好");
        //request.getRequestDispatcher("/dept/test2").forward(request,response);
        request.getRequestDispatcher("/html/suc.html").forward(request, response);
    }
    /**
     * 重定向:
     * @param request
     * @param response
     * @throws IOException
     */
    @RequestMapping("t3")
    public void test3(HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println("我是test3");
        //response.sendRedirect("/SpringMVCTest/dept/t4");
        response.sendRedirect("/SpringMVCTest/html/suc.html");
    }

2.ResponseBody響應(yīng)json數(shù)據(jù)

1、導(dǎo)入關(guān)鍵jar導(dǎo)入依賴

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

2、標(biāo)簽配置不過濾靜態(tài)資源

DispatcherServlet會攔截到所有的資源,導(dǎo)致一個問題就是靜態(tài)資源(img、css、js)也會被攔截到,從而不能被使用。解決問題就是需要配置靜態(tài)資源不進(jìn)行攔截,在springmvc.xml配置文件添加如下配置

  1. location元素表示webapp目錄下的包下的所有文件
  2. mapping元素表示以/static開頭的所有請求路徑,如/static/a 或者/static/a/b
<!--設(shè)置靜態(tài)資源不過濾-->
<mvc:resources mapping="/css/**" location="/css/"/> <!--樣式-->
<mvc:resources mapping="/images/**" location="/images/"/> <!--圖片-->
<mvc:resources mapping="/js/**" location="/js/"/> <!--javascript-->

controller層代碼示例:user對象轉(zhuǎn)換成json對象傳輸給前端

/**
 * 異步的數(shù)據(jù)交互
 * 重定向
 * @return
 */
@RequestMapping("/save6")
public @ResponseBody User save6(User user){
    System.out.println(user);
    // 模擬,調(diào)用業(yè)務(wù)層代碼
    user.setUsername("hello");
    user.setAge(100);
    // 把user對象轉(zhuǎn)換成json,字符串,再響應(yīng)。使用@ResposeBody注解 response.getWriter().print()
    return user;
}

到此這篇關(guān)于SpringMVC響應(yīng)處理詳細(xì)解讀的文章就介紹到這了,更多相關(guān)SpringMVC響應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?離線中文語音文字識別功能的實(shí)現(xiàn)代碼

    Java?離線中文語音文字識別功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java?離線中文語音文字識別,本次使用springboot?+maven實(shí)現(xiàn),官方demo為springboot+gradle,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • IDEA創(chuàng)建方法時如何快速添加注釋

    IDEA創(chuàng)建方法時如何快速添加注釋

    這篇文章主要介紹了IDEA創(chuàng)建方法時如何快速添加注釋問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 如何使用JAVA實(shí)現(xiàn)數(shù)字水印

    如何使用JAVA實(shí)現(xiàn)數(shù)字水印

    本文介紹了如何使用JAVA實(shí)現(xiàn)數(shù)字水印,主要用到了java.awt包中的AlphaComposite類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • springboot實(shí)現(xiàn)返回文件流

    springboot實(shí)現(xiàn)返回文件流

    這篇文章主要介紹了springboot實(shí)現(xiàn)返回文件流方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java增強(qiáng)for循環(huán)的增刪操作代碼

    Java增強(qiáng)for循環(huán)的增刪操作代碼

    Foreach循環(huán)(Foreach loop)是計(jì)算機(jī)編程語言中的一種控制流程語句,通常用來循環(huán)遍歷數(shù)組或集合中的元素,本文通過實(shí)例演示普通for循環(huán)和foreach循環(huán)使用,java增強(qiáng)for循環(huán)的操作代碼感興趣的朋友一起看看吧
    2024-02-02
  • Java中的Lambda表達(dá)式詳解

    Java中的Lambda表達(dá)式詳解

    這篇文章主要介紹了Java中的Lambda表達(dá)式詳解,Lambda 表達(dá)式是 JDK8 的一個新特性,可以取代大部分的匿名內(nèi)部類,寫出更優(yōu)雅的 Java 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優(yōu)化代碼結(jié)構(gòu),需要的朋友可以參考下
    2024-01-01
  • java LinkedList的實(shí)例詳解

    java LinkedList的實(shí)例詳解

    這篇文章主要介紹了java LinkedList的實(shí)例詳解的相關(guān)資料,通過本文希望大家能徹底了解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • mybatisPlus批量插入優(yōu)化加快性能

    mybatisPlus批量插入優(yōu)化加快性能

    這篇文章主要介紹了mybatisPlus批量插入優(yōu)化加快性能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • java可變參數(shù)(不定向參數(shù))的作用與實(shí)例

    java可變參數(shù)(不定向參數(shù))的作用與實(shí)例

    這篇文章主要給大家介紹了關(guān)于java可變參數(shù)(不定向參數(shù))的作用與實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java?Date(日期)對象進(jìn)行格式化的思路詳解

    Java?Date(日期)對象進(jìn)行格式化的思路詳解

    Date類是經(jīng)常會使用到的一個用來處理日期、時間的一個類。Date類是在java.util包下的Date類,這篇文章主要介紹了Java?Date(日期)對象如何進(jìn)行格式化呢,需要的朋友可以參考下
    2022-09-09

最新評論