对于springmvc接收参数有那些方式,下面我写了几个。
- 先创建项目,导入jar包配置web.xml ,springmvc-servlet.xml上面有过介绍,在本章最下面配置信息也写了出来。
- 通过HttpServletRequest 获取参数
@RequestMapping(value="par1.do") public ModelAndView par1(HttpServletRequest request){ // 接收前台传来的参数 String userName = request.getParameter("userName"); String passWord = request.getParameter("passWord"); // 控制台打印输入 传来参数的值 System.out.println(userName+"===HttpServletRequest====="+passWord); // 视图跳转 ModelAndView model = new ModelAndView("para"); model.addObject("para", "HttpServletRequest"); return model; }
对应前台
<!-- 测试HttpServletRequest接收参数 --> <h1>测试HttpServletRequest接收参数</h1> <form action="user/par1.do" method="post"> 用户名1:<input type="text" name="userName"/><br/> 密 码1:<input type="password" name="passWord"/><br/> <input type="submit" value="提交"/> </form>
2.通过前台后,name名称一致
@RequestMapping(value="par2.do") // uName 和 uPass 就是前台传来的参数,名称保持一致,没有前后顺序要求 public ModelAndView par2(String uName,String uPass){ System.out.println(uName+"前后台名称相同"+uPass); ModelAndView model = new ModelAndView("para"); model.addObject("para", "前后台名称相同"); return model; }
对应前台
<!-- 前后台 name名称相同,接收参数 --> <h1>前后台 name名称相同,接收参数</h1> <form action="user/par2.do" method="post"> 用户名2:<input type="text" name="uName"/><br/> 密 码2:<input type="password" name="uPass"/><br/> <input type="submit" value="提交"/> </form>
3.测试下前台数据类型和后台接收数据类型不一致会怎么样
@RequestMapping(value="par3.do") // 测试下能不能设置参数数据类型 public ModelAndView par3(Integer uName,String uPass){ System.out.println(uName+"参数数据类型"+uPass); ModelAndView model = new ModelAndView("para"); model.addObject("para", "参数数据类型"); return model; }
前台数据
<!-- 接收参数数据类型 --> <h1>前后台 name名称相同,接收参数数据类型</h1> <form action="user/par3.do" method="post"> 用户名2:<input type="text" name="uName"/><br/> 密 码2:<input type="password" name="uPass"/><br/> <input type="submit" value="提交"/> </form>
结果:如果前后台数据类型不一致,会报错的
4.通过对象传参
@RequestMapping(value="par4.do") // 通过对象传值 public ModelAndView par4(User user){ System.out.println(user.toString()+"通过对象传参"); ModelAndView model = new ModelAndView("para"); model.addObject("para", "通过对象传参"); return model; }
对应前台
<!-- 通过对象传参,这里的name名称必须和对象属性名保持一致,注意:参数数据类型也要一致 --> <h1>通过对象传参</h1> <form action="user/par4.do" method="post"> 用户名3:<input type="text" name="uName"/><br/> 年 龄3:<input type="text" name="age"/><br/> 时间 :<input type="text" name="uTime"/><br/> 密 码3:<input type="password" name="pass"/><br/> <input type="submit" value="提交"/> </form>
看到这里有个时间,后台需要我们对时间做下处理
//时间属性编辑器 @InitBinder public void initBinder(ServletRequestDataBinder bin){ // 时间接收格式,可以根据自己需求定义 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CustomDateEditor cust = new CustomDateEditor(sdf, true); bin.registerCustomEditor(Date.class, cust); }
看下完整代码
- 目录结构
- TestParameter完整代码
package com.control; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.entity.User; @Controller @RequestMapping("/user/") public class TestParameter { @RequestMapping(value="par1.do") public ModelAndView par1(HttpServletRequest request){ // 接收前台传来的参数 String userName = request.getParameter("userName"); String passWord = request.getParameter("passWord"); // 控制台打印输入 传来参数的值 System.out.println(userName+"===HttpServletRequest====="+passWord); // 视图跳转 ModelAndView model = new ModelAndView("para"); model.addObject("para", "HttpServletRequest"); return model; } @RequestMapping(value="par2.do") // uName 和 uPass 就是前台传来的参数,名称保持一致,没有前后顺序要求 public ModelAndView par2(String uName,String uPass){ System.out.println(uName+"前后台名称相同"+uPass); ModelAndView model = new ModelAndView("para"); model.addObject("para", "前后台名称相同"); return model; } @RequestMapping(value="par3.do") // 测试下能不能设置参数数据类型 // 经过测试发现,如果前台传来的数据类型和接收定义的数据类型不一致,会报错 public ModelAndView par3(Integer uName,String uPass){ System.out.println(uName+"参数数据类型"+uPass); ModelAndView model = new ModelAndView("para"); model.addObject("para", "参数数据类型"); return model; } @RequestMapping(value="par4.do") // 通过对象传值 public ModelAndView par4(User user){ System.out.println(user.toString()+"通过对象传参"); ModelAndView model = new ModelAndView("para"); model.addObject("para", "通过对象传参"); return model; } //时间属性编辑器,这里可以提取出来,作为公共方法 @InitBinder public void initBinder(ServletRequestDataBinder bin){ // 时间接收格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CustomDateEditor cust = new CustomDateEditor(sdf, true); bin.registerCustomEditor(Date.class, cust); } }
3.index.jsp完整代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <H1>测试springmvc传参</H1> <!-- 测试HttpServletRequest接收参数 --> <h1>测试HttpServletRequest接收参数</h1> <form action="user/par1.do" method="post"> 用户名1:<input type="text" name="userName"/><br/> 密 码1:<input type="password" name="passWord"/><br/> <input type="submit" value="提交"/> </form> <!-- 前后台 name名称相同,接收参数 --> <h1>前后台 name名称相同,接收参数</h1> <form action="user/par2.do" method="post"> 用户名2:<input type="text" name="uName"/><br/> 密 码2:<input type="password" name="uPass"/><br/> <input type="submit" value="提交"/> </form> <!-- 接收参数数据类型 --> <h1>前后台 name名称相同,接收参数数据类型</h1> <form action="user/par3.do" method="post"> 用户名2:<input type="text" name="uName"/><br/> 密 码2:<input type="password" name="uPass"/><br/> <input type="submit" value="提交"/> </form> <!-- 通过对象传参,这里的name名称必须和对象属性名保持一致,注意:参数数据类型也要一致 --> <h1>通过对象传参</h1> <form action="user/par4.do" method="post"> 用户名3:<input type="text" name="uName"/><br/> 年 龄3:<input type="text" name="age"/><br/> 时间 :<input type="text" name="uTime"/><br/> 密 码3:<input type="password" name="pass"/><br/> <input type="submit" value="提交"/> </form> </body> </html>
4.para.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>${para }</h1> </body> </html>
5.web.xml 代码
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
6.springmvc-servlet.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- 注解驱动 --> <mvc:annotation-driven/> <!-- 注解扫描 --> <context:component-scan base-package="com.control"/> <!-- 视图解析 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/view/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
时间: 2024-08-02 18:15:41