java中从界面传入对象_Springmvc controller和jsp页面传值对象类型问题和普通问题

本文详细介绍了在Java SpringMVC中如何从JSP页面传递对象到Controller,以及Controller如何将数据回传到JSP,包括对象类型的参数传递、普通数据的传递方法,以及使用Model和Map的方式在前后端之间交换数据。
摘要由CSDN通过智能技术生成

一:JSP-->controller

1.当jsp页面传递的值是对象类型时候比如User.name User.age的user对象传递,需要以下操作

jsp页面提供对应标签的value必须存在且合法,name属性只能是对象的具体属性名,不需要写成对象.属性名的形式,例如:

Insert title here

/js/jquery-1.8.3.min.js">

$(function() {

$("#prev").click(function() {

$("#form0").attr("action","${pageContext.request.contextPath}/user/prev.do");varcurrentPage=$("#currentPage").val()- 1;

$("#currentPage").val(currentPage);

alert($("#currentPage").val());

$("#form0").submit();

})

$("#next").click(function() {

$("#form0").attr("action","${pageContext.request.contextPath}/user/next.do");

$("#form0").submit();

})

})

id

name

age

${user.id}${user.userName}${user.age} 1}">当前${pageTableForm.currentPage}页/共${pageTableForm.pageCount}页

这里的

我自己定义的一个封装属性的javabean对象PageTableForm,用来存放表单内容,个人习惯别较真儿

packagecom.mi.form;public classPageTableForm {private int currentPage;//当前页

private int pageSize = 3;//每页记录数

private int beginIndex;//开始位置

private int endIndex;//结束位置

private int pageCount;//共多少页

private int userCount;//共多少条记录

...

省略get set

}

此时的value="${pageTableForm.currentPage}"的值为一个int类型且存在的数字,提交表单后到对应的requestmapping的方法中,代码如下

packagecom.mi.controller;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcom.mi.entity.User;importcom.mi.form.PageTableForm;importcom.mi.service.impl.UserInfoServiceImpl;

@Controller

@RequestMapping("/user")public classUserInfoCotroller {

@AutowiredprivateUserInfoServiceImpl userInfoServiceImpl;privatePageTableForm pageTableForm;

@RequestMapping("/init")publicString init(){

pageTableForm= newPageTableForm();return "redirect:/user/query.do";

}

@RequestMapping("/query")publicString queryUserInfo(Model model,HttpServletRequest request) {

pageTableForm=getOperation();

List userList =userInfoServiceImpl.queryUserInfo(pageTableForm.getBeginIndex(), pageTableForm.getEndIndex());

model.addAttribute("userList", userList);

model.addAttribute("pageTableForm", pageTableForm);return "userInfo";

}publicPageTableForm getOperation() {if (pageTableForm.getCurrentPage() == 0)

pageTableForm.setCurrentPage(1);

pageTableForm.setUserCount(getCount());if (pageTableForm.getUserCount() % 3 == 0) {

pageTableForm.setPageCount(pageTableForm.getUserCount()/pageTableForm.getPageSize());

}else{

pageTableForm.setPageCount(pageTableForm.getUserCount()/ pageTableForm.getPageSize() + 1);

}

pageTableForm.setBeginIndex(pageTableForm.getCurrentPage()* 3 - 3);

pageTableForm.setEndIndex(pageTableForm.getCurrentPage()* 3);returnpageTableForm;

}

@RequestMapping("/prev")

public String pagePrev(Model model,HttpServletRequest request,PageTableForm pageTableForm) {

System.out.println(request.getParameter("currentPage"));

System.out.println(pageTableForm.getCurrentPage());

int currentPage = pageTableForm.getCurrentPage()-1;

pageTableForm.setCurrentPage(currentPage);

return "redirect:/user/query.do";

}

@RequestMapping("/next")publicString pageNext(Model model) {int currentPage = pageTableForm.getCurrentPage()+1;

pageTableForm.setCurrentPage(currentPage);return "redirect:/user/query.do";

}public intgetCount() {returnuserInfoServiceImpl.getCount();

}publicUserInfoServiceImpl getUserInfoServiceImpl() {returnuserInfoServiceImpl;

}public voidsetUserInfoServiceImpl(UserInfoServiceImpl userInfoServiceImpl) {this.userInfoServiceImpl =userInfoServiceImpl;

}publicPageTableForm getPageTableForm() {returnpageTableForm;

}public voidsetPageTableForm(PageTableForm pageTableForm) {this.pageTableForm =pageTableForm;

}

}

红色部分就是提交的方法,可以看出在方法参数中要声明一下对象,这里我为了是实验比较数据传到后台是否正确,所以使用了2中方法--request.getParamter()和直接使用对象.get...方法,得出结果如下所示,

c7fe8787d994126900b1caef43588ce8.png

我点击上一页,页面alert一个跳转页面的页码,现在是从第二页翻到第一页,所以是1,这样我们后台2次正确的情况应该也都是1(日语操作系统,别在意这些,不是乱码)

59abff0e8342011d5112cd092a54b198.png

多点了一次,别在意这些,重点是后台获取的数据就是前台我们想要的

2.当jsp->后台是普通数据的时候,实际项目中这种情况不多,但是还是总结一下

暂时挂起,关于这些我想等到实际用到时再列,上1中已经列了一种方法,另外就是利用注解去值

页面如下

用户:
密码:

普通数据(非对象)的数据有2种方法传递到后台,request获取+注解版的request

1):request获取

/*** 使用HttpServletRequest获取*/@RequestMapping("/login1")publicString login1(HttpServletRequest request,Model model){

model.addAttribute("name", request.getParameter("name"));

model.addAttribute("password", request.getParameter("password"));return "success";

}

2):注解版的request

/*** spring自动将表单参数注入到方法参数,参数值和页面name属性一致时可以省去@RequestParam注解*/@RequestMapping("/login2")public String login2(@RequestParam("name") String name, String password,Model model){

model.addAttribute("name", name);

model.addAttribute("password", password);return "success";

}

实体类User不再列出了

f08918668eb21624a4708a73fcce1b28.png

二:controller-->JSP

有2中办法(实际更多,不过存在重复嫌疑列举常用的就好),用model+用map

1):利用model对象添加数据到属性中,页面可以使用EL表达式获取

@RequestMapping("/init")publicString init(){

pageTableForm= newPageTableForm();return "redirect:/user/query.do";

}

@RequestMapping("/query")publicString queryUserInfo(Model model,HttpServletRequest request) {

pageTableForm=getOperation();

List userList =userInfoServiceImpl.queryUserInfo(pageTableForm.getBeginIndex(), pageTableForm.getEndIndex());

model.addAttribute("userList", userList);

model.addAttribute("pageTableForm", pageTableForm);return "userInfo";

}

JSP:

id

name

age

${user.id}${user.userName}${user.age} 1}">当前${pageTableForm.currentPage}页/共${pageTableForm.pageCount}页

2):使用map方式设值,JSP同上不再列出

@RequestMapping("/login4")public String login4(User user, Mapmap){

map.put("name", user.getName());

map.put("password", user.getPassword());return "success";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值