spring MVC 是新建module项目:而之前的spring 中是创建一个工程用的maven。是不一样的。
加上一对键值对 以免搭建慢。
这里将controller对象进行注册也就是交给springIOC处理 存入map中。在映射的类上面加上@Controller映射将方法对象放入spring IOC 里面。
在xml中加上注解扫描器进行扫描。在controller的类中的方法进行加上映射@RequestMapping ()注解进行注射。
前端控制器是一个枢纽作用没有处理作用。
处理器映射器 根据mapping找到controller方法。
处理器适配器:任何Controller都可以执行。
第三章: 请求参数的绑定;
但是如果多的话运用 这个bean 来操作。
基本类型参数:
包括基本类型和 String 类型
POJO 类型参数:
包括实体类,以及关联的实体类
数组和集合类型参数:
包括 List 结构和 Map 结构的集合(包括数组)
SpringMVC 绑定请求参数是自动实现的,但是要想使用,必须遵循使用要求。
控制器代码:
/**
- 保存账户
- @param account
- @return
*/
@RequestMapping("/saveAccount")
public String saveAccount(Account account) {
System.out.println(“保存了账户。。。。”+account);
return “success”; }
private String username;
private String password;
private double money;
@Override
public String toString() {
return "Account{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", money=" + money +
'}';
}
<%--这一个bena要和domain里的一致才可以--%>
<form action="param/saveAccount" method="post">
姓名:<input type="text" name="username"/> <br/>
密码:<input type="text" name="password"/> <br/>
金额:<input type="text" name="money"/> <br/>
<input type="submit" value="提交">
</form>
/*
将请求参数封装到类中javabean的类中
* */
@RequestMapping("/saveAccount")
public String saveAccount(Account account){
System.out.println("zhixinfgl");
System.out.println(account);
return "success";
}
接下来是怎么使用引用方法进行访问。如果 account对象中出现一个user对象user对象里面有一些自己的属性。接下来看一下如何进行封装的
<form action="param/saveAccount" method="post">
姓名:<input type="text" name="username"/> <br/>
密码:<input type="text" name="password"/> <br/>
金额:<input type="text" name="money"/> <br/>
用户姓名:<input type="text" name="user.uname"/> <br/>
用户年龄:<input type="text" name="user.age"/> <br/>
<input type="submit" value="提交">
</form>
配置解决中文乱码的过滤器: 在web.XMl 文件中配置。
集合进行封装:
private String username;
private String password;
private double money;
/* private User user;*/
private List<User> list;
private Map<String , User> map;
<form action="param/saveAccount" method="post">
姓名:<input type="text" name="username"/> <br/>
密码:<input type="text" name="password"/> <br/>
金额:<input type="text" name="money"/> <br/>
<%--把user的一组对象封装到List集合中--%>
用户姓名:<input type="text" name="list[0].uname"/> <br/>
用户年龄:<input type="text" name="list[0].age"/> <br/>
<%--将user 的对象封装到map集合中--%>
用户姓名:<input type="text" name="map['one'].uname"/> <br/>
用户年龄:<input type="text" name="map['one'].age"/> <br/>
<input type="submit" value="提交">
/*
将请求参数封装到类中javabean的类中
* */
@RequestMapping("/saveAccount")
public String saveAccount(Account account){
System.out.println("zhixinfgl");
System.out.println(account);
return "success";
}
自己配置自定义类型 封装;
<form action="param/saveUser" method="post">
用户姓名:<input type="text" name="uname" /><br/>
用户年龄:<input type="text" name="age" /><br/>
用户生日:<input type="text" name="date" /><br/>
<input type="submit" value="提交" />
</form>
private String uname;
private Integer age;
private Date date;
/**
* 自定义类型转换器
* @param user
* @return
*/
@RequestMapping("/saveUser")
public String saveUser(User user){
System.out.println("执行了...");
System.out.println(user);
return "success";
}
<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itcast.utils.StringToDate"/>
</set>
</property>
</bean>
//把字符创转换成日期类型
public class StringToDate implements Converter<String, Date> {
/**
* String source 传入进来字符串
* @param source
* @return
*/
public Date convert(String source) {
// 判断
if(source == null){
throw new RuntimeException("请您传入数据");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
// 把字符串转换日期
return df.parse(source);
} catch (Exception e) {
throw new RuntimeException("数据类型转换出现错误");
}
}
}
常用注解:
<a href="anno/testRequestParam?name=哈哈">RequestParam</a>
*/
@Controller
@RequestMapping("/anno")
public class AnnoController {
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(name="name") String username){
System.out.println("执行了...");
System.out.println(username);
return "success";
}
}
获得 q请求体内容@RequestBody
<%--获得请求体的内容--%>
<form action="anno/RequestBody" method="post">
用户姓名:<input type="text" name="uname" /><br/>
用户年龄:<input type="text" name="age" /><br/>
<input type="submit" value="提交" />
</form>
@RequestMapping("/RequestBody")
public String testRequestBody( @RequestBody String body){
System.out.println(body);
return"success";
}