JAVA springmvc参数
一、简单参数:
package jd.com.contronller; import jd.com.projo.goods;
import org.springframework.stereotype.Controller;
import jd.com.service.goodsService ;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List; @Controller
public class goodsController {
@Resource(name="goodsServiceImpl")
private goodsService goodsService; @RequestMapping("/items")
public String findAll(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model){
List<goods> list=this.goodsService.findAllGoods();
model.addAttribute("items",list);
return "items"; }
}
其中:public String findAll(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model)controller类中的方法,自动重载,其中参数HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model根据实际情况进行加减。
当方法返回的是字符串的时候,返回值是页面的名称。其中Modle我们定义在其中定义数据。
springmvc可以自动接收一些简单的参数比如基本类型参数加上String。
controller类:
@RequestMapping("/update")
public String updateByid(String goodsname, String detail, Integer id, Integer money){
System.out.println(goodsname+detail+id+money);
goods goods =new goods();
goods.setDetail(detail);
goods.setGoodsname(goodsname);
goods.setId(id);
goods.setMoney(money);
this.goodsService.updateById(goods);
return "success";
}
需要前端传递过来的参数的key和我们上面的方法的参数的名称需要保持一致。
因为传递传递过来的参数都是字符串类型,我们可以直接在方法中修改我们想接收的参数类型,springmvc帮我们自动转换类型。比如上 面的例子中id,就是spring帮我们转换的。
上面的方法有点麻烦如果前端传递过来很多参数的话 我们需要一一set这些值。spring为我们提供projo类的方法。
二、projo类的参数传递
条件:
传递过来的参数需要key和projo类的属性一一对应。否则接收不到。
我们使用projo类goods来替换我们上面的简单类型的参数
@RequestMapping("/update")
public String upddateById(goods goods){
this.goodsService.updateById(goods);
return "success";
}
解决post中文乱码:
在web.xml加入 :
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-</param-value>
</init-param>
</filter>
三、vo参数类型
前端传递过来的参数有可能是多个表的字段,所以我们projo类不可能是都满足需求。这时候需要几个projo类组成我们需要的实体类。
需要注意前端页面需要写属性.属性 这样才能对应上vo类中引用其他的类的数据

vo类:
package jd.com.vo;
import jd.com.projo.goods;
import java.util.Date;
public class vo {
private goods goods;
public jd.com.projo.goods getGoods() {
return goods;
}
public void setGoods(jd.com.projo.goods goods) {
this.goods = goods;
}
}
controller类:
@RequestMapping("/vo")
public String searchBydateAndNmae(vo vo){
goods goods =this.goodsService.findByTime(vo);
System.out.println(goods.getMoney());
return null;
}
前端页面:需要注意前端页面想显示日期格式需要使用<fmt:formatDate value="${n.create_time}" pattern="yyyy-MM-dd HH:mm:ss" />
<%--
Created by IntelliJ IDEA.
User: liumeide
Date: //
Time: :
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" pageEncoding="utf-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
<script type="text/javascript" src="<c:url value='/resources/bootstrap.min.js'/>"></script>
<link rel="stylesheet" type="text/css" href="<c:url value='/resources/bootstrap.min.css'/>"/>
</head>
<body style="text-align: center">
<div class="col-md-5" style="text-align: center">
<h1> 商品详情</h1>
<table class="table table-bordered table-responsive">
<tbody>
<form method="post" action="/vo.action">
<tr>
<td>查询条件</td>
<td>商品日期</td>
<td><input type="text" name="goods.goodsname" value="${items[0].goodsname}"></td>
<td>商品名称</td>
<td><input type="text" name="goods.create_time" value="<fmt:formatDate value="${items[].create_time}" pattern="yyyy-MM-dd HH:mm:ss" /> "></td>
<td><input type="submit"></td>
</tr>
</form> <c:forEach items="${items}" var="n">
<tr>
<td>${n.id}</td>
<td>${n.goodsname}</td>
<td>${n.money}</td>
<td>${n.detail}</td>
<td><fmt:formatDate value="${n.create_time}" pattern="yyyy-MM-dd HH:mm:ss" /> </td>
<td><a href="/edit.action?id=${n.id}">修改</a></td>
</tr>
</c:forEach>
</tbody> </table>
</div> </body>
</html>
四、参数类型为数组
解决方法:
1、使用vo类中的设置属性,比如:private Integer[] ids;使用该字段接收数组。
比如批量删除根据id值。通过vo类来接收删除的id数组。前端页面需要将name改成ids。
package jd.com.vo;
import jd.com.projo.goods;
import java.util.Date;
public class vo {
private Integer[] ids;
private goods goods;
public jd.com.projo.goods getGoods() {
return goods;
}
public void setGoods(jd.com.projo.goods goods) {
this.goods = goods;
}
public Integer[] getIds() {
return ids;
}
public void setIds(Integer[] ids) {
this.ids = ids;
}
}
2、可以用Integer[] ids 进行接收。
controller类:
@RequestMapping("/deleteids")
public String deleteByIds(Integer[] ids){
System.out.println(Arrays.toString(ids));
return "";
}
@RequestMapping("/deleteids")
public String deleteByIds(vo vo){
System.out.println(Arrays.toString(vo.getIds()));
return "";
}
五、接收参数为List<E>
一般我们进行更新或者批量更新的时候,需要使用泛型来进行处理。
在vo类中添加属性:private List<goods> goodsList;
private List<goods> goodsList;
前端页面:name属性为后端定义属性.下标.属性名字
<c:forEach items="${items}" var="n" varStatus="status">
<tr>
<td><input type="checkbox"></td>
<td><input type="text" name="ids" hidden="hidden" value="${n.id}"></td>
<td><input type="text" name="goodsList[${status.index}].goodsname" id="" value="${n.goodsname}"></td>
<td><input type="text" value="${n.money}" name="goodsList[${status.index}].money" ></td>
<td><input type="text" value="${n.detail}" name="goodsList[${status.index}].detail" ></td>
<td><input type="text" disabled="disabled" value="<fmt:formatDate value="${n.create_time}" pattern="yyyy-MM-dd HH:mm:ss" />" name="goodList[status.index].create_time" ></td>
<td><a href="/edit.action?id=${n.id}">修改</a></td>
</tr>
</c:forEach>
通过foreach标签的varStatus属性。来确定在后端接收参数goodList的位置。
controller类:
@RequestMapping("/updateObjs")
public String updateObjs(vo vo){
System.out.println(vo.getGoodsList().get().getGoodsname());
return null;
}
JAVA springmvc参数的更多相关文章
- spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二)
spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二) >>>>>>>>>>>>>>&g ...
- spring参数类型异常输出,SpringMvc参数类型转换错误输出
spring参数类型异常输出, SpringMvc参数类型转换错误输出 >>>>>>>>>>>>>>>> ...
- 一篇文章搞定SpringMVC参数绑定
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- [Java] SpringMVC工作原理之一:DispatcherServlet
一.DispatcherServlet 处理流程 在整个 Spring MVC 框架中,DispatcherServlet 处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应工作.在看 Di ...
- [转载]SpringBoot系列: SpringMVC 参数绑定注解解析
本文转载自 https://www.cnblogs.com/morethink/p/8028664.html, 作者写得非常好, 致谢! SpringMVC 参数绑定注解解析 本文介绍了用于参数绑 ...
- SpringMVC参数绑定,这篇就够了!
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- springmvc 参数解析绑定原理
handlerMethodArgumentResolver:方法参数解析器接口,这个接口是springmvc参数解析绑定的核心接口.不同的参数类型绑定都是通过实行这个接口来实现.也可以通过实现这个接口 ...
- SpringMVC参数绑定(未完待续)
1. Strut2与SpringMVC接收请求参数的区别 Struts2通过action类的成员变量接收SpringMVC通过controller方法的形参接收 2. SpringMVC参数绑定流程 ...
- java函数参数默认值
java函数参数默认值 今天,需要设定java函数参数的默认值,发现按照其它语言中的方法行不通 java中似乎只能通过函数的重载来实现 函数参数默认代码
随机推荐
- ThinkPHP中create()方法自动验证表单信息
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证 ...
- 排序算法(3)--Insert Sorting--插入排序[3]--Shell Sort--希尔排序
1.基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 2.实现原理 对于n ...
- 2016计蒜之道复赛 百度地图的实时路况(Floyd 分治)
题意 题目链接 Sol 首先一个结论:floyd算法的正确性与最外层\(k\)的顺序无关(只要保证是排列即可) 我大概想到一种证明方式就是把最短路树上的链拿出来,不论怎样枚举都会合并其中的两段,所以正 ...
- js-JavaScript常见的创建对象的几种方式
1.通过Object构造函数或对象字面量创建单个对象 这些方式有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为了解决这个问题,出现了工厂模式. 2.工厂模式 考虑在ES中无法创建类( ...
- Linux 多个vi、vim进程编辑同一文件时的临时文件问题
多个vi.vim进程编辑同一文件时的临时文件问题 by:授客 QQ:1033553122 使用vi.vim编辑文件,实际是先copy一份临时文件并映射到内存里进行编辑,所以你编辑的是临时文件,不是 ...
- js替换数组中字符串实例
这个是替换数组中的一个对象字符串: 直接上代码: var aaa=[ {"name":"张珊","sex":"man"} ...
- Permission denied (publickey),Gitlab & Github 多ssh key 冲突 导致的权限问题
Github 多ssh key导致的权限问题 :Permission denied (publickey) 公司用gitlib搭建了git服务器,自己已有github账号,用ssh-keygen分别生 ...
- python 实现int函数
拖了这么久,最终还是战胜了懒惰,打开电脑写了这篇博客,内容也很简单,python实现字符串转整型的int方法 python已经实现了int方法,我们为什么还要再写一遍,直接用不就好了?事实确实如此,但 ...
- maven+spring+junit测试要注意的事情
使用maven方式创建webapp工程的资料网上一大堆,在这里也不详细说了.在创建完成之后,里面说到要转动态web工程时要切换为3.0版本,但是我本地切换不了,网上的方法好像也没用,暂时也没用到这块. ...
- eclipse中整合ejb和web工程
用 Eclipse JEE 版本的话,新建一个 Enterprise Application Project 工程(New --> Java EE --> Enterprise Appli ...