zoukankan      html  css  js  c++  java
  • JAVA springmvc参数

    一、简单参数:

     1 package jd.com.contronller;
     2 
     3 import jd.com.projo.goods;
     4 import org.springframework.stereotype.Controller;
     5 import  jd.com.service.goodsService ;
     6 import org.springframework.ui.Model;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 
     9 import javax.annotation.Resource;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 import javax.servlet.http.HttpSession;
    13 import java.util.List;
    14 
    15 @Controller
    16 public class goodsController {
    17     @Resource(name="goodsServiceImpl")
    18     private goodsService goodsService;
    19 
    20     @RequestMapping("/items")
    21     public String findAll(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model){
    22         List<goods> list=this.goodsService.findAllGoods();
    23         model.addAttribute("items",list);
    24         return "items";
    25 
    26     }
    27 }

     其中:public String findAll(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model)controller类中的方法,自动重载,其中参数HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model根据实际情况进行加减。

    当方法返回的是字符串的时候,返回值是页面的名称。其中Modle我们定义在其中定义数据。

    springmvc可以自动接收一些简单的参数比如基本类型参数加上String。

    controller类:

     1     @RequestMapping("/update")
     2      public  String updateByid(String goodsname, String detail, Integer id, Integer money){
     3         System.out.println(goodsname+detail+id+money);
     4         goods goods =new goods();
     5         goods.setDetail(detail);
     6         goods.setGoodsname(goodsname);
     7         goods.setId(id);
     8         goods.setMoney(money);
     9         this.goodsService.updateById(goods);
    10         return "success";
    11      }

    需要前端传递过来的参数的key和我们上面的方法的参数的名称需要保持一致。

    因为传递传递过来的参数都是字符串类型,我们可以直接在方法中修改我们想接收的参数类型,springmvc帮我们自动转换类型。比如上 面的例子中id,就是spring帮我们转换的。

    上面的方法有点麻烦如果前端传递过来很多参数的话 我们需要一一set这些值。spring为我们提供projo类的方法。

    二、projo类的参数传递

    条件:

          传递过来的参数需要key和projo类的属性一一对应。否则接收不到。

    我们使用projo类goods来替换我们上面的简单类型的参数

    1     @RequestMapping("/update")
    2     public String upddateById(goods goods){
    3         this.goodsService.updateById(goods);
    4 
    5     return  "success";
    6     }

     解决post中文乱码:

    在web.xml加入 :

    1   <filter>
    2     <filter-name>CharacterEncodingFilter</filter-name>
    3     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    4     <init-param>
    5       <param-name>encoding</param-name>
    6       <param-value>utf-8</param-value>
    7     </init-param>
    8   </filter>

    三、vo参数类型

    前端传递过来的参数有可能是多个表的字段,所以我们projo类不可能是都满足需求。这时候需要几个projo类组成我们需要的实体类。

    需要注意前端页面需要写属性.属性 这样才能对应上vo类中引用其他的类的数据


    vo类:

     1 package jd.com.vo;
     2 
     3 import jd.com.projo.goods;
     4 
     5 import java.util.Date;
     6 
     7 public class vo {
     8 
     9     private goods goods;
    10     public jd.com.projo.goods getGoods() {
    11         return goods;
    12     }
    13 
    14     public void setGoods(jd.com.projo.goods goods) {
    15         this.goods = goods;
    16     }
    17 }

    controller类:

    1     @RequestMapping("/vo")
    2     public String searchBydateAndNmae(vo vo){
    3         goods goods =this.goodsService.findByTime(vo);
    4         System.out.println(goods.getMoney());
    5         return null;
    6     }

     前端页面:需要注意前端页面想显示日期格式需要使用<fmt:formatDate value="${n.create_time}" pattern="yyyy-MM-dd HH:mm:ss" />

     1 <%--
     2   Created by IntelliJ IDEA.
     3   User: liumeide
     4   Date: 2018/4/30
     5   Time: 19:05
     6   To change this template use File | Settings | File Templates.
     7 --%>
     8 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" pageEncoding="utf-8" %>
     9 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    10 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    11 <html>
    12 <head>
    13     <title>Title</title>
    14     <script type="text/javascript" src="<c:url value='/resources/bootstrap.min.js'/>"></script>
    15     <link rel="stylesheet" type="text/css" href="<c:url value='/resources/bootstrap.min.css'/>"/>
    16 </head>
    17 <body style="text-align: center">
    18 <div class="col-md-5" style="text-align: center">
    19     <h1> 商品详情</h1>
    20     <table class="table table-bordered  table-responsive">
    21         <tbody>
    22         <form method="post" action="/vo.action">
    23             <tr>
    24                 <td>查询条件</td>
    25                 <td>商品日期</td>
    26                 <td><input type="text" name="goods.goodsname" value="${items[0].goodsname}"></td>
    27                 <td>商品名称</td>
    28                 <td><input type="text" name="goods.create_time" value="<fmt:formatDate value="${items[0].create_time}" pattern="yyyy-MM-dd HH:mm:ss" /> "></td>
    29                 <td><input type="submit"></td>
    30             </tr>
    31         </form>
    32 
    33         <c:forEach items="${items}" var="n">
    34             <tr>
    35                 <td>${n.id}</td>
    36                 <td>${n.goodsname}</td>
    37                 <td>${n.money}</td>
    38                 <td>${n.detail}</td>
    39                 <td><fmt:formatDate value="${n.create_time}" pattern="yyyy-MM-dd HH:mm:ss" /> </td>
    40                 <td><a href="/edit.action?id=${n.id}">修改</a></td>
    41             </tr>
    42         </c:forEach>
    43         </tbody>
    44 
    45     </table>
    46 </div>
    47 
    48 </body>
    49 </html>

     四、参数类型为数组

    解决方法:

    1、使用vo类中的设置属性,比如:private Integer[] ids;使用该字段接收数组。

    比如批量删除根据id值。通过vo类来接收删除的id数组。前端页面需要将name改成ids。

     1 package jd.com.vo;
     2 
     3 import jd.com.projo.goods;
     4 
     5 import java.util.Date;
     6 
     7 public class vo {
     8 
     9     private  Integer[] ids;
    10     private goods goods;
    11     public jd.com.projo.goods getGoods() {
    12         return goods;
    13     }
    14 
    15     public void setGoods(jd.com.projo.goods goods) {
    16         this.goods = goods;
    17     }
    18 
    19     public Integer[] getIds() {
    20         return ids;
    21     }
    22 
    23     public void setIds(Integer[] ids) {
    24         this.ids = ids;
    25     }
    26 }

    2、可以用Integer[] ids 进行接收。

    controller类:

    1     @RequestMapping("/deleteids")
    2     public String  deleteByIds(Integer[] ids){
    3         System.out.println(Arrays.toString(ids));
    4         return "";
    5     }
    1     @RequestMapping("/deleteids")
    2     public String  deleteByIds(vo vo){
    3         System.out.println(Arrays.toString(vo.getIds()));
    4         return "";
    5     }

    五、接收参数为List<E>

    一般我们进行更新或者批量更新的时候,需要使用泛型来进行处理。

    在vo类中添加属性:private List<goods> goodsList;

    1  private List<goods> goodsList;

    前端页面:name属性为后端定义属性.下标.属性名字

     1         <c:forEach items="${items}" var="n" varStatus="status">
     2             <tr>
     3                 <td><input type="checkbox"></td>
     4                 <td><input type="text"  name="ids" hidden="hidden" value="${n.id}"></td>
     5                 <td><input type="text"   name="goodsList[${status.index}].goodsname" id="" value="${n.goodsname}"></td>
     6                 <td><input type="text"  value="${n.money}" name="goodsList[${status.index}].money" ></td>
     7                 <td><input type="text"   value="${n.detail}" name="goodsList[${status.index}].detail" ></td>
     8                 <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>
     9                 <td><a href="/edit.action?id=${n.id}">修改</a></td>
    10             </tr>
    11         </c:forEach>

    通过foreach标签的varStatus属性。来确定在后端接收参数goodList的位置。

    controller类:

    1     @RequestMapping("/updateObjs")
    2     public String  updateObjs(vo vo){
    3         System.out.println(vo.getGoodsList().get(0).getGoodsname());
    4         return null;
    5     }
  • 相关阅读:
    异步多线程 Thread ThreadPool Task
    ASP.NET MVC IActionFilter IResultFilter IExceptionFilter/HandleError
    ASP.NET MVC Area 区域
    ASP.NET MVC Bundles 合并压缩(js css)
    ASP.NET MVC ActionMethodSelectorAttribute 以及HttpGet等Action特性
    ASP.NET MVC Form表单验证与Authorize特性
    ASP.NET MVC Owin 基本理解
    CSS 基础 例子 图片拼合技术
    CSS 基础 例子 display属性:block、inline和inline-block的区别
    UVa 1326
  • 原文地址:https://www.cnblogs.com/evilliu/p/8974761.html
Copyright © 2011-2022 走看看