1. 程式人生 > >SpringMVC前後臺傳值寫法

SpringMVC前後臺傳值寫法

注意:

此文件僅限於cc的個人專案,因為某些配置檔案不同,比如springMVC配置檔案配置了返回的jsp前後綴pages 和.jsp,返回到頁面的話前後綴可省略,再必須配置了返回物件的話會把其轉變為json的格式,所以看的時候要自動帶入。。。

1.前臺向後臺傳值:

1.1傳引數

只要name的值和controller的方法中引數一致即可

(1)jsp:

<h2>提交物件給後臺</h2>
  <form id="fm" method="post" action="${ctx}/user/login2.do">
<div>
    <div>使用者名稱:</div>
    <input type="text" name="userName" value=""/>
    <div>密碼:</div>
    <input type="password" name="password" value=""/>
    <div>手機號:</div>
    <input type="text" name="mobilePhone" value=""/>
</div>
<div>
    <!-- <button id="login" onclick="login();">登入</button>  -->
<input type="submit" value="登入"/>
</div>
</form>

(2)後臺controller:

@RequestMapping("/login2")
public String login2(String userName,String password,String mobilePhone){
    User user  = new User();
    user.setUserName(userName);
    user.setPassword(password);
    user.setMobilePhone(mobilePhone);
    User login = userService.findUserForLogin(user);
    if(login != null){
        return "user/users";
    }
    return "redirect:/index.jsp";
}

訪問:index.jsp:
http://localhost:8080/sm/(本人程式碼點選不起作用)
輸入引數點選登入,後臺可獲取到值

1.2傳物件

只要name的值與Bean實體類的屬性名稱一致即可,springMVC會自動識別成物件傳入

(1)實體類:

public class User implements Serializable{

private static final long serialVersionUID = 1L;
//使用者編號
private Integer id;
//使用者名稱
private String userName;
//密碼
private String password;
//手機號
private String mobilePhone;
//地址
private String address;
//身份/角色:1:遊客(預設) 2:讀者  3:作者  0:管理員
private Integer role;
//備註
private String note;
public User(){}
//省略setter and getter …
}

(2)jsp:

<h2>提交物件給後臺</h2>
  <form id="fm" method="post" action="${ctx}/user/login.do">
<div>
    <div>使用者名稱:</div>
    <input type="text" name="userName" value=""/>
    <div>密碼:</div>
    <input type="password" name="password" value=""/>
    <div>手機號:</div>
    <input type="text" name="mobilePhone" value=""/>
</div>
<div>
    <!-- <button id="login" onclick="login();">登入</button>  -->
<input type="submit" value="登入"/>
</div>
</form>

如果物件內還有物件打點即可

(3)後臺controller:

@RequestMapping("/login")
public String login(User user){
        User login = userService.findUserForLogin(user);
        if(login != null){
            return "user/users";
        }
        return "redirect:/index.jsp";
    }
}

頁面跳轉至pages/user/users.jsp頁面:

(4)users.jsp:

 <h1>所有使用者如下</h1>
 <table>
    <thead>
        <tr>
            <td>使用者編號</td>
            <td>使用者名稱</td>
            <td>密碼</td>
            <td>手機號</td>
            <td>聯絡地址</td>
            <td>系統角色</td>
            <td>備註</td>
        </tr>

    </thead>
    <tbody>
        <tr>
        <c:forEach items="${users}" var="user">
            <td>${user.id}</td>
            <td>${user.userName}</td>
            <td>${user.password}</td>
            <td>${user.mobilePhone}</td>
            <td>${user.address}</td>
            <td>${user.role}</td>
            <td>${user.note}</td>
        </c:forEach>
        </tr>
    </tbody>
    <tfoot>
    </tfoot>
</table>

顯示如下:
使用者編號 使用者名稱 密碼 手機號 聯絡地址 系統角色 備註
1 cc 123456 18811111111 北京 1 我天,我們有了第一個使用者

1.3傳集合

(1)jsp:

<h2>提交集合給後臺</h2>
<form id="fm2" method="post" action="${ctx}/user/handleUserList.do">
<div>
    <div>使用者名稱:</div>
    <input type="text" name="users[0].userName" value=""/>
    <div>密碼:</div>
    <input type="password" name="users[0].password" value=""/>
    <div>手機號:</div>
    <input type="text" name="users[0].mobilePhone" value=""/>
</div>
<div>
    <!-- <button id="login" onclick="login();">登入</button>  -->
<input type="submit" value="登入"/>
</div>
</form>

(2)自定義使用的集合類:

//傳遞前後臺引數使用
public class UserListVO {
    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}

(3)後臺controller:

@RequestMapping("/handleUserList")
@ResponseBody
public List<User> handleUserList(UserListVO userListVOs) {
    return userListVOs.getUsers();
}

點選登入顯示:
[{“id”:null,”userName”:”cc”,”password”:”123456”,”mobilePhone”:”18810424140”,”address”:null,”role”:null,”note”:null}]

我會告訴你們set,map都需要這麼做麼,哈哈哈哈哈

1.4當然你還有萬能的

//Controller:
@RequestMapping(“handleRequest”)
Public void handleRequest(HttpServletRequest request){
    //不多寫大家都會使
}

2.後臺向前臺傳值:

2.1返回物件

我這裡說的物件是Model和集合

2.1.1返回json字串

我這裡是返回物件直接轉化為json在.do的請求中,配置檔案中配置即可,注意配置後ie瀏覽器會預設.json是一個檔案,提示下載,想直接顯示瀏覽器中,要把它攔截下來轉化為text顯示,springMVC配置檔案如下:

<bean id="mappingJacksonHttpMessageConverter2" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

<mvc:default-servlet-handler />
<!-- 啟動Spring MVC的註解功能,完成請求和註解POJO的對映 -->
<bean  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="mappingJacksonHttpMessageConverter2" /><!-- json轉換器 -->
        </list>
    </property>
</bean>

當Controller中方法中返回物件且方法上註解@ResponseBody時,會在當前.do訪問路徑下顯示一個json字串,之前的例子有顯示,這裡不寫了。

2.1.2返回ModelAndView物件

此物件是一個檢視解析器,既包含view也包含物件資料object
Controller:

@RequestMapping("/queryAll2")//@RequestMapping請求與執行對應上
    public ModelAndView queryAll2(){
        List<User> users =  userService.findAll();
        /*
         * 1.ModelAndView:即包含檢視資訊,也包含模型資料資訊,這樣spring mvc就可以使用檢視對模型資料進行渲染了。
         * 可以簡單的將模型資料看做一個Map<String,Object>物件
         * 如下方法新增模型資料:
         * ModelAndView addObject(String attributeName,Object attributeValue);
         * ModelAndView addAllObjects(Map<String,?> modelMap);
         * 如下方法設定檢視:
         * void setView(View view);指定一個具體的檢視物件
         * void setViewName(String viewName):指定一個邏輯檢視名
         */
        ModelAndView mav = new ModelAndView();
        mav.setViewName("user/users");
        mav.addObject("users", users);
        return mav;
    }
訪問此路徑:http://localhost:8080/sm/user/queryAll2.do(本人專案點選無反應)
頁面會跳轉至users.jsp,且有資料顯示。

2.2返回頁面

直接返回頁面不帶引數可直接返回String型別的路徑:

return "user/users";

我這裡在springMVC配置中配置了頁面資源前後綴pages和.jsp可省略。
如果希望返回String型別去頁面但是帶上一些資料:

[email protected]

此註解在請求引數中,它把請求引數也作為返回物件返回
,也就是說雖然返回的是一個jsp的字串型別,可是此jsp中還帶著此引數,可用el表示式獲取。
因為@ModelAttribute會把引數儲存到request中,springMVC預設返回的路徑是一個請求轉發。
重定向可以這麼寫:

return "redirect:/index.jsp";

此時需要前後綴,我也不知為毛,可能是配置檔案中預設也是請求轉發才會帶上
示例:同前臺向後臺傳值部分的傳物件,發現雖然返回的是一個jsp:”user/users”,但是
${user.userName}也可以獲取到

2.2.2ModelMap

此物件在springMVC中稱為隱式物件,存在這裡也相當於存在了request中,可以在頁面直接獲取,一般放在引數位置,springMVC一旦發現有Map或Model型別的入參,就會將請求內在的隱含模型物件傳遞給這些引數,因此在方法體重可以通過這個入參對模型中的資料進行讀寫操作。

(1)Controller:

//可以預先定義ModelMap中固定有什麼,一旦引數裡有ModelMap,這個物件就會放進去
//例,此時modelMap中有鍵值對”cc”=”cc”
@ModelAttribute("cc")
    public String getCc() {
        return “cc”;
    }

@RequestMapping("/handleModelMap")
    public String handleModelMap(ModelMap modelMap) {
        //放入新的物件
        modelMap.addAttribute("dd", "I'm dd");
        //springMVC將請求對應的隱含模型物件傳遞給modelMap,因此可以在方法中
        //它訪問模型中的資料   @ModelAttribute("cc")getCc處定義了
        String cc = (String) modelMap.get("cc");
//如果放一個List
        List<User> users = userService.findAll();
        modelMap.addAttribute("users", users);
        return "user/users";
    }

(2)jsp:

在users.jsp中el表示式可以訪問到:

<div>
        <h2>ModelMap test</h2>
        <input type="text" value="${cc }"/>
        <input type="text" value="${dd}"/>
        <input type="text" value="${users[0].userName }"/>
</div>

顯示如下:
ModelMap test

cc I’m dd cc

相關推薦

SpringMVC前後臺寫法

注意: 此文件僅限於cc的個人專案,因為某些配置檔案不同,比如springMVC配置檔案配置了返回的jsp前後綴pages 和.jsp,返回到頁面的話前後綴可省略,再必須配置了返回物件的話會把其轉變為json的格式,所以看的時候要自動帶入。。。 1.前臺

SpringMVC中的前後臺注意事項

1.前臺設定contentType:"application/x-www-form-urlencoded",前臺是JSON物件,後臺接收方法可以是字串、物件。示例如下: function remoteService(url,postData) {var res = ""

最基本的前後臺

static ati 代碼 pre 成功 his type lis exp <!DOCTYPE html><html><head> <meta charset="utf-8"> <title></ti

SpringMVC頁面

mvc 傳值 ray springmvc name web mvc頁面傳值 urn 小明 public ModelAndView query(){ ModelAndView modelAndView = new ModelAndView(); List list =

SSH框架學習------struts2前後臺(二)

sts put ret req extends imp tps str rri struts2的Action類一般都會繼承(extends)ActionSupport類(Action類,即實現action的類)1.前傳後:jsp裏<input type="text"

springmvc ajax詳解

div ring ajax info clas spring image png 技術 springmvc ajax傳值詳解

springmvc的幾種方式&&postman接口測試

red ews 參數 一點 名稱 each comment PQ 分享圖片 最近在用postman測試postman接口,對於springmvc傳值這一塊,測試了幾種常用方式,總結一下。對於postman這個工具的使用也增加了了解。p

使用Json進行前後臺

一、傳值方式           Json通過字串形式進行前後臺傳值 二、Jsp_Servlet_前後臺傳值 從前臺向後臺傳值:使用x-www-form-urlencoded:request.getParameter()方法獲取js

SpringMVC前端的問題總結

最近在忙著一個練習,前端的引數傳到後臺都變為null 百度了下,發現最終是因為用錯一個註解導致,使用路徑直接訪問是通過@PathVariabl String id,看了一下使用註解獲取路徑中傳遞引數 ,共有以下幾種情況: 路徑中引數帶有 @Req

JAVA WEB前後臺

- 理清業務流程 先將需要將前臺中獲取頁面中所提供給你的資訊,然後將這資訊傳送給後臺服務層。 思路很簡單,那麼直接上程式碼:(程式碼中有些語句的寫法可能有些奇怪,這是因為博主使用了《澤元》框架完成的,但是無論用什麼這些過程本質都是一樣的)

Springmvc前端到後臺 對應實體類接收

繫結陣列每個商品前有一個checkbok,選中多個商品後點擊刪除按鈕把商品id傳遞給Controller。jsp頁面<c:forEach items="${itemList }"var="item"> <tr>     <td><in

關於json前後臺

function checkname() { varIdCard= document.getElementById("uIdCard").value; varIdCardValid= document.getElementById("uIdCardValid"); if(IdCard.length<6|

struts2前後臺---利用

在action中將查出的資料放入到值棧中 //準備資料 List<Department> departmentList=departmentService.findA

jsp 下拉框,前後臺

 public String add(){   ObjectMap params=ObjectMap.newInstance();   List rolelist=roleService.list(params,page);   setAttribute("rolelist

jQuery運用BootStrap風格的Ztree前後臺-多選框

我個人後臺使用List<Map<String,Object>>拼接,轉換為Json陣列傳遞到前臺,程式碼片段如下:List<Map<String, Object&g

SpringMVC前臺給後臺的方式

lan prop 類型 weight 可能 return 註意 保持 tool 轉自:http://blog.csdn.net/flymoringbird/article/details/53126505 1. 基本數據類型(以int為例,其他類似): Controll

Java SpringMVC框架學習(二)httpServeltRequest和Model的區別

urn ont ppi mode array style att 區別 () 為什麽大多程序在controller中給jsp傳值時使用model.addAttribute()而不使用httpServeletRequest.setAttribute()? 事實上model數

vue插槽,也就是子頁面、父頁面相互的另一寫法

style def com data component rop 頁面 ret slot 父頁面: <template> <div class="parent"> <p>父組件</p> <child> &l

SpringMVC、轉發、重定向例子

modelmap mapping 成功 實體 this 測試 set import 方法參數 練習接收頁面參數值 使用request 使用@RequestParam註解 使用實體對象 練習向頁面傳出數據 使用HttpServletRequest和session 使用Mo

springmvc的前後端

lis mod ttr attribute orm ces brush str get 一.後端傳值給前端 1.ModelAndView @RequestMapping("/testModelAndView") public ModelAndView testModelA