您的位置:首页 > 编程语言 > Java开发

Springmvc(四)各种方法的汇总

2016-04-04 10:35 337 查看
绿色为重要
一、前台请求参数
@RequestMapping("/test") //可以为空 默认为0 如果是Integer的话,后面两个可以不写,也会显示null
public String test(@RequestParam("username") String un,@RequestParam(value="age",required=false,defaultValue="0") int age){
……
}

二、参数映射到路径中
@RequestMapping("/test/{id}") //一般是嵌入增删改查里面,简单时候就是可以少些几个input,再练习练习,查查资料看,这个挺关键的一个技术

public String test(@PathVariable("id") Integer id){
...out(id);

}

三、hiddenHttpMethodFilter过滤器(GET\POST\PUT\DELETET提交表单)
web.xml配置:



jsp: get是查,增删改都是post,post是新增,PUT是修改,DELETE是删除
<form action="test/1" method="post">
如果是put和delete需要加<input type="hidden" name="_method" value="DELETE"/>//必须是完全一样的

...
</form>
后台:
@RequestMapping(value="/test/{id}",method=RequestMethod.DELETE)

public String test(@PathVariable Integer id){
...out(id);

}

四、存入session
类方法中都是正常写
类注解:
@SessionAttributes(value={"user"},types={String.class})
解释:values里面的值是map的key,写多少都行

type是属性,这里是说只要是String,就写入session

五、ModelAttribute(就是直接注入对象的属性,但是一些属性比如密码和创建日期是不能修改的,就需要用到)
正常form提交,正常的属性注入,假如传入的对象是User
那么类里面加一个方法即可:
@ModelAttribute
//只要方法标注了这个,那么这个方法在执行之前就会被springmvc调用,这里的用处就是在程序调用这个方法之前,从数据库里面查出来的User对象其实已经放到了requset或是session里面了;
而且,如果不加这个方法,其他的方法需要注入User属性,但是属性不完全,并且还有@SessionAttributesvalues=(values={"user"})的话,会报错。
//id不是必须的
public void getUser(RequestParam(value="id",required=false) Integer id,Map<String ,Object> map){
if(id!=null){

//id可以为空,为空的时候,要么就没传这个对象,要么就是新建这个对象,都和密码没有关系
User user=new
User(.......); //相当于从数据库里面取到这个对象,这里简单示例
map.put("user",user);
//注意,这里的key必须是User的小写(User是别的方法的导入参数)
}
}
other:public void test(User user){....}
其他的方法如果接受到User对象,并且没有密码属性,那么就自动装配了数据库里面的属性

②如果map.put("")里面确实不想为user,那么在别的方法注入的时候,就必须这样写:
假如这里的map.put("abc",abc);
那么 public String test(@ModelAttribute("abc") User user){....} 修饰即可

六、国际化
看视频26就可以了,使用fmt格式,jstl视图,加个配置文件直接搞定
mvc.xml里面也可以配置直接跳转,使用mvc标签

七、mvc有自己的页面表单标签,form:form。。。不知道是否好用。配合验证是挺好

八、数据格式化
1、配置文件:一般是默认的,如果是需要自定义的话,那么就看视频35

<bean id="conversionService"

class="org.springframework.format.support.FormattingConversionServiceFactoryBean">

</bean>
2、实体类:
@NotEmpty
//非空
private String lastName;
@Email

//一般的email格式
private String email;

@Past

//验证比当前时间晚
@DateTimeFormat(pattern="yyyy-MM-dd")//设置格式
private Date birth;

@NumberFormat(pattern="#,###,###.#")
//设置格式
private Float salary;

九、错误验证,自定义(一般不用,如果需要返回自己的错误提示,就用这个,40虽然是国际化,但是也是39的延伸,很简单)
视频39、40

十、Json
@responsebody,和3个jar包,直接看视频就行

十一、文件上传
方法传参:@RequestParam("name") MultipartFile file
web.xml需要配置,视频47

留了一个问题,如果是多文件上传怎么办?

十一、异常处理
spring配置文件:

<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>

统一抛出异常:
1、首先,在handler里面找到对应的异常抛出方法,如果找不到,就会找@ControllerAdvice注解的类

各个抛出的类写法和一般的controller方法写法是一致的

@ExceptionHandler({ArithmeticException.class}) //这是一个异常的类名,最大一般是RuntimeException,运行时错误
public ModelAndView handleArithmeticException(Exception ex){
ModelAndView mv=new ModelAndView("error");
mv.addObject("exception",ex);
return mv;
}

统一的:
新建类

@ControllerAdvice
public class handleException {
@ExceptionHandler({RuntimeException .class})
public ModelAndView handleArithmeticException(Exception ex){
其他都一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: