springMVC--封裝參數及頁面回顯__JavaEE

來源:互聯網
上載者:User
封裝參數

注意:springmvc沒有成員變數,把需要傳遞的參數對象放入方法中,當你請求這個方法的時候,

這個方法裡面的對象會自動被建立,需要封裝的參數自動被封裝到方法的對象中

分析接受參數類型:

基本類型,int,String等等基本類型。

Pojo類型

封裝類型

Springmvc預設支援類型:

HttpSession,HttpRequstServlet,Model等等。

Struts2參數:基於屬性封裝。

Springmvc參數封裝:基於方法進行封裝。
一、基本類型 1、頁面:

<form action="${pageContext.request.contextPath }/user/recieveInt.do" method="post">ID:<input type="text" name="id" id="id"><input type="submit" value="提交"></form>

2、方法:
@Controller//<bean class="UserController"/>@RequestMapping("/user")public class UserController {//跳轉到add頁面@RequestMapping("toAdd")public String toAdd(){return "add";}//接受int型別參數@RequestMapping("recieveInt")public String recieveInt(Integer id){System.out.println(id);return "success";}

springmvc.xml:
<?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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"><!-- 掃描,把Controller交給spring管理 --><context:component-scan base-package="cn.itcast"></context:component-scan><!-- 配置註解處理器映射器 功能:尋找執行類Controller--><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean><!-- 配置註解處理器適配器 功能:調用controller方法,執行controller--><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean><!-- 配置sprigmvc視圖解析器:解析邏輯試圖  後台返回邏輯試圖:index視圖解析器解析出真正物理視圖:首碼+邏輯試圖+尾碼====/WEB-INF/jsps/index.jsp--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsps/"></property><property name="suffix" value=".jsp"></property></bean></beans>

二、字串類型 1、頁面
<form action="${pageContext.request.contextPath }/user/recieveStr.do" method="post">姓名:<input type="text" name="username" id="username"><input type="submit" value="提交"></form>

2、方法
//接受字元型別參數@RequestMapping("recieveStr")public String recieveStr(String username){System.out.println(username);return "success";}

success.jsp:
<body><h1>接受參數成功</h1></body>

三、數群組類型

分析:大量刪除:checkbox複選框。Value必須有值。 1、頁面

<form action="${pageContext.request.contextPath }/user/recieveArray.do" method="post">ID:<input type="checkbox" name="ids" value="1" id="ids">ID:<input type="checkbox" name="ids" value="2" id="ids">ID:<input type="checkbox" name="ids" value="3" id="ids"><input type="submit" value="提交"></form>

2、方法
//接受數群組類型參數@RequestMapping("recieveArray")public String recieveArray(Integer[] ids){System.out.println(ids);return "success";}

四、pojo類型 User:
public class User {private Integer id;private String username;private Date birthday;private String sex;private String address;

1、頁面
<form action="${pageContext.request.contextPath }/user/recieveUser.do" method="post">姓名:<input type="text" name="username" id="username">生日:<input type="text" name="birthday" id="birthday">性別:<input type="text" name="sex" id="sex">地址:<input type="text" name="address" id="address"><input type="submit" value="提交"></form>

2、方法
//接受參數封裝User對象@RequestMapping("recieveUser")public String recieveUser(User user){System.out.println(user);return "success";}

五、封裝類型 UserCustomer:
public class UserCustom {private User user;

1、頁面
<form action="${pageContext.request.contextPath }/user/recieveUserCustom.do" method="post">姓名:<input type="text" name="user.username" id="username">生日:<input type="text" name="user.birthday" id="birthday">性別:<input type="text" name="user.sex" id="sex">地址:<input type="text" name="user.address" id="address"><input type="submit" value="提交"></form>

2、方法
//接受封裝型別參數@RequestMapping("recieveUserCustom")public String recieveUserCustom(UserCustom userCustom){System.out.println(userCustom);return "success";}

六、集合類型

方法體裡不能直接傳遞list集合和map集合類型的參數

把list集合和map集合封裝到封裝類中

UserCustomer:

public class UserCustom {private User user;private List<User> userList;private Map<String,Object> maps = new HashMap<String, Object>();

接受list集合: 1、頁面
<form action="${pageContext.request.contextPath }/user/recieveList.do" method="post">姓名:<input type="text" name="userList[0].username" id="username">地址:<input type="text" name="userList[0].address" id="address">姓名:<input type="text" name="userList[1].username" id="username">地址:<input type="text" name="userList[1].address" id="address"><input type="submit" value="提交"></form>

2、方法
//接受集合型別參數@RequestMapping("recieveList")public String recieveList(UserCustom userCustom){System.out.println(userCustom);return "success";}

接受map集合: 1、頁面
<form action="${pageContext.request.contextPath }/user/recieveMap.do" method="post">姓名:<input type="text" name="maps['username']" id="username">地址:<input type="text" name="maps['address']" id="address"><input type="submit" value="提交">

2、方法
//接受集合型別參數@RequestMapping("recieveMap")public String recieveMap(UserCustom userCustom){System.out.println(userCustom);return "success";}

有了struts2,為什麼還需要sprigmvc。

實現機制:

Struts2是基於過濾器實現的。

Springmvc基於servlet實現。Servlet比過濾器快。

 

運行速度:

Struts2是多例

請求來了以後,struts2建立多少個對象:

ActionContext,valuestack,UserAction,ActionSuport,ModelDriven

userAction裡面屬性:User對象,userlist集合等

 

Springmvc是單例。

 

參數封裝來分析:

Struts基於屬性進行封裝。

Springmvc基於方法封裝。顆粒更細

 

小明訪問了n次這個類

N個UserAction,n個actionSupport,n個modelDriver,n個user,n個list,n個actionContext

N個valueStack等

Public Class userAction extendsActionSupport implements ModelDriven{

Private user = new user();

Private List<user> list;

 

}

一個,如果存取方法,只需要建立方法裡面的幾個對象,對象是局部變數,使用完畢後就銷毀。

Public class userController(){}


頁面回顯

Springmvc使用model對象,model對象相當於application

Application對象中的資料可以使用el運算式進行擷取

方法裡面的對象會自動被建立,所以把model放到方法中
查詢所有:

@RequestMapping("list")public String list(Model model){//model相當於application域對象List<User> userList = new ArrayList<User>();User user1 = new User();user1.setId(1);user1.setSex("男");user1.setUsername("張山峰");user1.setAddress("武當山");user1.setBirthday(new Date());User user2 = new User();user2.setId(2);user2.setSex("男2");user2.setUsername("張山峰222");user2.setAddress("武當山222");user2.setBirthday(new Date());User user3 = new User();user3.setId(3);user3.setSex("男3");user3.setUsername("張山峰333");user3.setAddress("武當山333");user3.setBirthday(new Date());userList.add(user1);userList.add(user2);userList.add(user3);model.addAttribute("userList", userList);return "list";}

頁面擷取:
<body><table border="1" style="color: blue"><tr><td>姓名</td><td>生日</td><td>性別</td><td>地址</td><td>操作</td></tr><c:forEach items="${userList }" var="user"><tr><td>${user.username }</td><td>${user.birthday }</td><td>${user.sex }</td><td>${user.address }</td><td><a href="${pageContext.request.contextPath }/user/updateByID.do=${user.id}">修改</a></td></tr></c:forEach></table></body>

修改:
//修改@RequestMapping("updateByID")public String updateByID(Integer id,Model model){User user1 = new User();user1.setId(id);user1.setSex("男");user1.setUsername("張山峰");user1.setAddress("武當山");user1.setBirthday(new Date());model.addAttribute("user", user1);return "edit";}

回顯:edit.jsp:
<form action="${pageContext.request.contextPath }/user/recieveUser.do" method="post">姓名:<input type="text" name="username" value="${user.username }" id="username">生日:<input type="text" name="birthday" value="${user.birthday }" id="birthday">性別:<input type="text" name="sex" value="${user.sex }" id="sex">地址:<input type="text" name="address" value="${user.address }" id="address"><input type="submit" value="提交"></form>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.