public String sayHellow()直接在括号里加参数名称
对于普通的基本类型参数,只需要在方法的参数中参数名与前端提交的form表单的name名字一样就可以,传递到后端。
javaBean的例子
package com.spring.controller;
import com.spring.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(path = "user")
public class controller {
@RequestMapping(path = "hello",headers = {"Accept"})
public String sayHellow(Account account){
System.out.println(account);
return "success";
}
}
<form method="post" action="user/hello" >
<input type="text" name="username">
<input type="text" name="password">
<input type="text" name="user.name">
<input type="text" name="user.age">
<input type="submit" name="submit">
form>
在web.xml中去配置
<filter>
<filter-name>characterEncodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>characterEncodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
Account类
public class Account implements Serializable {
private String username;
private String password;
private List<User> list;
private Map<String,User> map;
controller类
@Controller
@RequestMapping(path = "user")
public class controller {
@RequestMapping(path = "hello",headers = {"Accept"})
public String sayHellow(Account account){
System.out.println(account);
return "success";
}
}
<form method="post" action="user/hello" >
<input type="text" name="username">
<input type="text" name="password">
<input type="text" name="list[0].name">
<input type="text" name="list[0].age">
<input type="text" name="map['one'].name">
<input type="text" name="map['one'].age">
<input type="submit" name="submit">
form>
对于我们在前端页面提交的数据,其实都是以字符串的形式传输到后台的,springMVC,有一个很友好的机制,它有一个类型转换器,可以帮我们转换成对应的参数。比如age这个值,在后台就会转换成Int类型。如果是Date类型的日期数据,如果我们提交的是2000/10/10,springMVC同样也可以帮我们自动转换,但是如果我们提交2000-10-10,就会报错。这个是我们不想的。所以我们要解决这个问题。
User类
public class User {
private String name;
private int age;
private Date date;
controller
@Controller
@RequestMapping(path = "user")
public class controller {
@RequestMapping(path = "hello",headers = {"Accept"})
public String sayHellow(User user){
System.out.println(user);
return "success";
}
}
index.jsp
<form method="post" action="user/hello" >
<input type="text" name="name">
<input type="text" name="age">
<input type="text" name="date">
<input type="submit" name="submit">
form>
自定义类型转换器类
package com.spring.utils;
import javafx.scene.input.DataFormat;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 将字符串转换成日期对象
*/
public class StringToDateConverter implements Converter<String, Date> {
/**
* @param s 传入进来的字符串
* @return
*/
public Date convert(String s) {
if(s == null)
throw new RuntimeException("请您输入数据");
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
try {
return df.parse(s);
} catch (ParseException e) {
throw new RuntimeException("数据类型转换错误!!");
}
}
}
配置SpringMVC.xml
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.spring.utils.StringToDateConverter">bean>
set>
property>
bean>
<mvc:annotation-driven conversion-service="conversionService"/>
直接在方法参数上加request和response。
@Controller
@RequestMapping(path = "user")
public class controller {
@RequestMapping(path = "hello",headers = {"Accept"})
public String sayHellow(HttpServletRequest request, HttpServletResponse response){
System.out.println(request);
HttpSession session = request.getSession();
System.out.println(session);
ServletContext context = session.getServletContext();
System.out.println(context);
System.out.println(response);
return "success";
}
}