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

基于spring mvc請求controller訪問方式

 更新時(shí)間:2021年09月08日 11:34:06   作者:攻城獅_java  
這篇文章主要介紹了spring mvc請求controller訪問方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring mvc請求controller訪問

1.一個(gè)Controller里含有不同的請求url

@Controller  //類似Struts的Action
public class TestController {
    @RequestMapping("test/login.do")  // 請求url地址映射,類似Struts的action-mapping
    public String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) {
        // @RequestParam是指請求url地址映射中必須含有的參數(shù)(除非屬性required=false)
        // @RequestParam可簡寫為:@RequestParam("username")
        if (!"admin".equals(username) || !"admin".equals(password)) {
            return "loginError"; // 跳轉(zhuǎn)頁面路徑(默認(rèn)為轉(zhuǎn)發(fā)),該路徑不需要包含spring-servlet配置文件中配置的前綴和后綴
        }
        return "loginSuccess";
    }
}

2.采用一個(gè)url訪問

通過url參數(shù)來區(qū)分訪問不同的方法

@Controller
@RequestMapping("/test2/login.do")  // 指定唯一一個(gè)*.do請求關(guān)聯(lián)到該Controller
public class TestController2 {
        @RequestMapping
    public String testLogin(String username, String password, int age) {
        // 如果不加任何參數(shù),則在請求/test2/login.do時(shí),便默認(rèn)執(zhí)行該方法
        
        if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
            return "loginError";
        }
        return "loginSuccess";
    }
    @RequestMapping(params = "method=1", method=RequestMethod.POST)
    public String testLogin2(String username, String password) {
        // 依據(jù)params的參數(shù)method的值來區(qū)分不同的調(diào)用方法
        // 可以指定頁面請求方式的類型,默認(rèn)為get請求
        
        if (!"admin".equals(username) || !"admin".equals(password)) {
            return "loginError";
        }
        return "loginSuccess";
    }
    
    @RequestMapping(params = "method=2")
    public String testLogin3(String username, String password, int age) {
        if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
            return "loginError";
        }
        return "loginSuccess";
    }
}

3.RequestMapping在Class上

可看做是父Request請求url,而RequestMapping在方法上的可看做是子Request請求url,父子請求url最終會拼起來與頁面請求url進(jìn)行匹配

@Controller
@RequestMapping("/test3/*")  // 父request請求url
public class TestController3 {
    @RequestMapping("login.do")  // 子request請求url,拼接后等價(jià)于/test3/login.do
    public String testLogin(String username, String password, int age) {
        if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
            return "loginError";
        }
        return "loginSuccess";
    }
}

4.在SpringMVC中常用的注解

還有@PathVariable,@RequestParam,@PathVariable標(biāo)記在方法的參數(shù)上,利用它標(biāo)記的參數(shù)可以利用請求路徑傳值

@Controller  //類似Struts的Action
public class TestController {
 @RequestMapping(value="/comment/{blogId}", method=RequestMethod.POST)
 public void comment(Comment comment,@PathVariable int blogId) throws IOException {    
 }
}

springmvc請求一次,訪問多個(gè)controller方法

有一個(gè)需求:請求一次,訪問多個(gè)controller中的方法

比如:先執(zhí)行查詢操作,再將查詢出來的內(nèi)容更新(當(dāng)然也可以將方法寫到bo中,在controller中直接調(diào)用bo的方法,這里只是舉個(gè)例子)

舉例

JSP頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>在一個(gè)action中執(zhí)行兩個(gè)方法</title>
</head>
<body>
1 哈哈 7000
<a href="${pageContext.request.contextPath}/emp/find?id=1" rel="external nofollow"  style="text-decoration:none">編輯</a>
</body>
</html>

Controller頁面

@Controller
@RequestMapping("/emp")
public class EmpAction { 
    @RequestMapping(value="/find")
    public String findEmpById(int id) throws Exception{
        System.out.println("查詢"+id+"號員工信息");
 
        //轉(zhuǎn)發(fā)到EmpAction的另一個(gè)方法中去,即再次發(fā)送請求
//        return "forward:/emp/update";
 
        //重定向到EmpAction的另一個(gè)方法中去,即再次發(fā)送請求
        return "redirect:/emp/update.action?id=" + id;
    }
 
    @RequestMapping(value="/update")
    public String updateEmpById(int id,Model model) throws Exception{
        System.out.println("更新" + id +"號員工信息");
        model.addAttribute("message","更新員工信息成功");
        return "success";
    }
}

結(jié)論

1. ModelAndView并不能實(shí)現(xiàn)兩個(gè)方法之間的數(shù)據(jù)傳遞;

2. 可以通過Session來進(jìn)行傳遞。

有多種方法可以實(shí)現(xiàn)Session傳遞

方法1:將HttpServletRequest作為方法形參 通過request.getSession().addAttribute

方法2:將HttpSession作為方法形參

方法3:通過@SessionAttribute+@ModelAttribute來進(jìn)行傳遞

使用HttpSession來存取數(shù)據(jù),不過這樣又在springmvc中使用了servlet的內(nèi)容,并不好

3. 使用轉(zhuǎn)發(fā)。在轉(zhuǎn)發(fā)情況下,共享request域?qū)ο?,會將參?shù)從第一個(gè)業(yè)務(wù)控制方法傳入第二個(gè)業(yè)務(wù)控制方法

return"forward:/emp/update.action";

4. 重定向不共享參數(shù),所以要帶參數(shù)才行

return "redirect:/emp/update.action?id="+ id;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java ClassLoader類加載器基礎(chǔ)詳解

    Java ClassLoader類加載器基礎(chǔ)詳解

    這篇文章主要為大家介紹了Java ClassLoader類加載器基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java學(xué)習(xí)筆記_關(guān)于字符串概述

    java學(xué)習(xí)筆記_關(guān)于字符串概述

    下面小編就為大家?guī)硪黄猨ava學(xué)習(xí)筆記_關(guān)于字符串概述。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 深入理解Java設(shè)計(jì)模式之外觀模式

    深入理解Java設(shè)計(jì)模式之外觀模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之外觀模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • 使用java執(zhí)行定時(shí)任務(wù)示例

    使用java執(zhí)行定時(shí)任務(wù)示例

    這篇文章主要介紹了使用java執(zhí)行定時(shí)任務(wù)示例,需要的朋友可以參考下
    2014-04-04
  • 怎樣給Kafka新增分區(qū)

    怎樣給Kafka新增分區(qū)

    這篇文章主要介紹了怎樣給Kafka新增分區(qū)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問)

    SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問)

    這篇文章主要介紹了SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java實(shí)現(xiàn)文件上傳與文件下載的示例代碼

    Java實(shí)現(xiàn)文件上傳與文件下載的示例代碼

    在開發(fā)中項(xiàng)目難免會遇到文件上傳和下載的情況,這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)文件上傳與文件下載的示例代碼,希望對大家有所幫助
    2023-07-07
  • 解決java junit單元測試@Test報(bào)錯(cuò)的問題

    解決java junit單元測試@Test報(bào)錯(cuò)的問題

    今天小編就為大家分享一篇解決java junit單元測試@Test報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Java運(yùn)算符從見過到掌握下

    Java運(yùn)算符從見過到掌握下

    計(jì)算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,作為一門計(jì)算機(jī)語言,Java也提供了一套豐富的運(yùn)算符來操縱變量,本篇對大家的學(xué)習(xí)或工作具有一定的價(jià)值,緊接上篇,需要的朋友可以參考下
    2021-09-09
  • centos 安裝java環(huán)境的多種方法

    centos 安裝java環(huán)境的多種方法

    本文給大家分享三種方法幫助大家安裝jdk,有利用yum來安裝jdk還有通過手動(dòng)解壓jdk的操作方法,每種方法給大家介紹的都非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評論