SpringMVC筆記2

来源:https://www.cnblogs.com/train99999/archive/2019/07/22/11229213.html
-Advertisement-
Play Games

響應數據和結果視圖 返回值分類 1.返回值是String 返回值類型是字元串的,會根據返回的字元串去尋找相對應的jsp頁面 2.返回值是Void 預設請求路徑是什麼就會去尋找請求路徑的jsp 編寫請求轉發和重定向的程式和直接響應 返回值是ModelAndView對象 (存JavaBean對象和跳轉頁 ...


響應數據和結果視圖

返回值分類

1.返回值是String

返回值類型是字元串的,會根據返回的字元串去尋找相對應的jsp頁面

@Controller
@RequestMapping("/user")
public class UserController {
    //返回值類型是String
    @RequestMapping("/testString")
    public String testString(Model model){
        System.out.println("testString方法執行了");
        //模擬從資料庫中查詢出User對象
        User user = new User();
        user.setAge(20);
        user.setPassword("123");
        user.setUsername("任我行");
        //使用model把對象存起來
        model.addAttribute("user",user);
        return "success";
    }

img

2.返回值是Void

預設請求路徑是什麼就會去尋找請求路徑的jspimg

編寫請求轉發和重定向的程式和直接響應

@Controller
@RequestMapping("/user")
public class UserController {
    //返回值類型是String
    @RequestMapping("/testString")
    public String testString(Model model){
        System.out.println("testString方法執行了");
        //模擬從資料庫中查詢出User對象
        User user = new User();
        user.setAge(20);
        user.setPassword("123");
        user.setUsername("任我行");
        //使用model把對象存起來
        model.addAttribute("user",user);
        return "success";
    }
    //返回值類型是Void
    //請求轉發是一次請求:不用編寫項目的名稱

    @RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("testVoid方法執行了");
        //編寫請求轉發的程式
       // request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);//轉發
        //response.sendRedirect(request.getContextPath()+"/index.jsp");//重定向
       //設置中文亂碼
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().print("hello,大笨蛋");
        return;
    }
}

返回值是ModelAndView對象(存JavaBean對象和跳轉頁面)

    //返回值類型是ModelAndView
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        ModelAndView mv = new ModelAndView();
        System.out.println("testModelAndView執行了");
        //模擬從資料庫中查詢出User對象
        User user = new User();
        user.setAge(20);
        user.setPassword("123");
        user.setUsername("令狐沖");
        //調用mv的方法
        //user對象存儲到mv對象中,同時也會把user對象存入到requst對象
        mv.addObject("user",user);
        //想跳轉的頁面
        mv.setViewName("success");
        return mv;
    }

轉發或重定向

  //返回值類型是ModelAndView
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect(){
        System.out.println("testForwardOrRedirect執行了");
//        return "forward:/WEB-INF/pages/success.jsp";
        
        //不用加項目名稱,框架已經加好
        return "redirect:/index.jsp";
    }

響應json數據值過濾靜態資源

<%--
  Created by IntelliJ IDEA.
  User: Yuan
  Date: 2019/7/22
  Time: 14:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>

    <script src="js/jquery.min.js"></script>

    <script>
        //頁面載入,綁定單擊事件
        $(function(){
           $("#btn").click(function(){
               alert("hello btn");
           })
        });
    </script>
</head>
<body>
   
    <br>
    <button id="btn">發送ajax請求</button>

</body>
</html>

上面的單擊事件無法響應,原因是DispatcherServlet把靜態資源給攔截了

解決方案

告訴前端控制器,哪些靜態資源不攔截

img

響應jso數據值發送ajax的請求

<%--
  Created by IntelliJ IDEA.
  User: Yuan
  Date: 2019/7/22
  Time: 14:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>

    <script src="js/jquery.min.js"></script>

    <script>
        //頁面載入,綁定單擊事件
        $(function(){
           $("#btn").click(function(){
               $.ajax({
                   //編寫json格式,設置屬性和值
                   //url:請求伺服器的路徑
                   url:"user/testAjax",
                   //contentType:發送內容給伺服器是的編碼類型
                   contentType:"application/json;charset=UTF-8",
                   //data:發送到伺服器的數據
                   data:'{"username":"hehe","password":"123","age":"20"}',
                   //dataType預期伺服器返回的類型
                   dataType:"json",
                   //tpye,請求方式
                   type:"post",
                   //success:請求成功後的回調函數
                   success:function(data){
                            //data伺服器端響應的json的數據,進行解析


                   }
               });
           });
        });
    </script>
</head>
<body>
    <br>
    <button id="btn">發送ajax請求</button>
</body>
</html>
 @RequestMapping("/testAjax")
    public void testAjax(@RequestBody String body){
        System.out.println("ajax執行了....");
        System.out.println(body);
    }

img

文件上傳之上傳原理分析

文件上傳的必要前提

1.form表單的enctype取值必須是:multipart/form-data

2.method屬性取值必須是Post

3.提供一個文件選擇域


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 黑馬2017年java就業班全套視頻教程 ava學習路線圖.pptx等多個文件 ava學習路線圖.pptx等多個文件 - 2019-07-20 10:03 老師分享的資料 老師分享的資料 - 2019-07-20 10:03 面試相關資料 面試相關資料 - 2019-07-20 10:03 java ...
  • python全套視頻,第十五期,從入門到精通,基礎班,就業班,面試,軟體包 下載地址 ...
  • 一、變數 1.註意點: 在同一個“作用域”中,變數名不能重名,但是變數可以重新賦值。 2.什麼是作用域? 答:描述的是變數的有效範圍,在範圍之內是可以被訪問的,只要出了作用域就無法訪問(也就是在大括弧裡面才行) 3.關於變數的分類 (1)局部變數:在方法體中聲明的變數; (2)成員變數:在方法體外聲 ...
  •   Class文件是一組以8位位元組為基礎單位的二進位流,各個數據項目嚴格按照順序緊湊排列在Class文件中,中間沒有添加任何分隔符,這使得整個Class文件中存儲的內容幾乎全部是程式運行的必要數據,沒有空隙。當遇到需要占用8位位元組以上的數據項時,會按照高位在前的方式分割成若幹個8 ...
  • 註意: HttpServletRequest 請求中的 body 內容僅能調用 request.getInputStream(), request.getReader()和request.getParameter("key") 方法讀取一次,重覆讀取會報 java.io.IOException: S ...
  • 第八章 複雜搜索 黑夜給了我黑色的眼睛,我卻用它尋找光明。 經過瞭解簡單的API和簡單搜索,已經基本上能應付大部分的使用場景。可是非關係型資料庫數據的文檔數據往往又多又雜,各種各樣冗餘的欄位,組成了一條"記錄"。複雜的數據結構,帶來的就是複雜的搜索。所以在進入本章節前,我們要構建一個儘可能"複雜"的 ...
  • https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html ...
  • 1、static介紹 static關鍵字一直是各大企業中面試常常會問到的問題,主要考察面試者的基礎是否扎實,下麵來介紹一下static關鍵字。 Java中static表示“全局”或者“靜態”的意思,可以用來修飾成員變數、成員方法、代碼塊、內部類和導包。在Java中並不存在全局變數的概念,但是我們可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...