springMVC常用注解

1.从路径中取变量值

<a href="${ pageContext.request.contextPath }/user/user001/order001">pathVarible</a></br>

java代码

	@RequestMapping(value="user/{name}/{orderId}",method=RequestMethod.GET)
	public String pathVariable(@PathVariable("name") String userName,@PathVariable("orderId") String orderId){
		System.out.println("userId"+userName);
		System.out.println("orderId"+orderId);
		return "ok";
	}
2.requestParam参数绑定

前台:

<a href="${ pageContext.request.contextPath }/user/requestParm?id=9">requestParm1</a></br>
后台:
@RequestMapping(value="/user/requestParm")
	public String requestParm(@RequestParam(value="id",defaultValue="defaultValue",required=true) String id){
		System.out.println(id);
		return "ok";
	}
required:参数是否必须填写.为true时不填会报错

defaultValue=xxx 不填默认值为xxx

3,requestHeader,cookieValue.接收请求头里的参数值


@RequestMapping(value="/user/requestHeader")
	public String requestHeader(@RequestHeader("Host")String Host,@RequestHeader("Connection")String Connection){
		System.out.println(Host);
		System.out.println(Connection);
		return "ok";
	}
	
	@RequestMapping(value="/user/cookieValue")
	public String cookieValue(@CookieValue("JSESSIONID")String sessionId){
		System.out.println(sessionId);
		return "ok";
	}

4.@ModelAttribute

@ModelAttribute用在方法上无返回值时,在执行controller里的其他的每个方法之前会先调用此方法

	@ModelAttribute
	public void modelAttribute(){
		System.out.println("modeAttribute执行le-----");
	}
	


@ModelAttribute用在方法上有返回值时,在执行controller里的其他的每个方法之前会先调用此方法,且可以在前台取到返回的值.

	@ModelAttribute
	public String modelAttribute(){
		System.out.println("modeAttribute执行le-----");
		return "index";
	}
	

前台取值:${ string }
	@ModelAttribute
	public User modelAttribute(){
		User user=new User("zhnagsan",23);
		System.out.println("modeAttribute执行le-----");
		return user;
	}
	
前台取值:${ user }

@ModelAttribute若指定了value,则取值时名字为value

	@ModelAttribute(value="modelName")
	public String modelAttribute(){
		System.out.println("modeAttribute执行le-----");
		return "index";
	}
前台取值${ modelName}

注释在方法内部参数上

  
        @ModelAttribute("user")  
        public User addUser() {  
           return new User("张三","123");  
        }  
  
        @RequestMapping(value = "/helloWorld")  
        public String helloWorld(@ModelAttribute("user") User user) {  
           return "helloWorld";  
        }  
    

下面方法的user是从上面的是从上面addUser方法中获取的
  1. public class MyInterceptor1 extends HandlerInterceptorAdapter {
---------------------------------------------------------------------------------------------------------------------------------------------------

5.springMVC拦截器

拦截器参考文章:http://blog.csdn.net/eson_15/article/details/51749880

http://jinnianshilongnian.iteye.com/blog/1670856

springmvc.xml中配置

<!-- 配置拦截器 -->
	<mvc:interceptors>
	<!-- 针对所有的路径配置拦截器 -->
		<bean class="interceptor.allInterCeprtor"/>
		<mvc:interceptor>
		<!-- 针对特定路径配置的拦截器 -->
			<mvc:mapping path="/helloWorld"/>
			<bean class="interceptor.myInterCeprtor"/>
		</mvc:interceptor>
	</mvc:interceptors>

自定义拦截器实现interceptorHandler接口

public class MyInterceptor implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		
		
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		
		
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handle) throws Exception {
		//访问登录页面放行
		if(request.getServletPath().startsWith(myContanst.LOGINURL)){
			return true;
		}
		//已经登录放行
	    if(request.getSession().getAttribute("user")!=null){
	    	return true;
	    }
	    //未登录,访问其他页面,非法url跳转到登录页面
		response.sendRedirect(request.getContextPath()+"/"+myContanst.LOGINURL);
	    return false;
	}

}
有时候我们可能只需要实现三个回调方法中的某一个,如果实现 HandlerInterceptor接口的话,三个方法必须实现,不管你需不需要,此处一般继承HandlerInterceptorAdapter适配器即可  ,允许我们只实现需要的回调方法。

  1. public class MyInterceptor1 extends HandlerInterceptorAdapter {

----------------------------------------------------------------------------------------------------------------------------------------------

6.springmvc异常处理

http://blog.csdn.net/eson_15/article/details/51731567

public class MyExecption implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			Exception ex) {
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("err.jsp");
		modelAndView.setViewName("err");
		return modelAndView;
	}
}

springmvc.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<!-- 扫描controller -->
	<context:component-scan base-package="com.test.controller" />
	<context:component-scan base-package="interceptor" />
	<context:component-scan base-package="exception" />
	<!-- 配置注解驱动,如果配置此标签可以不用配置处理器映射器和适配器 -->
	<mvc:annotation-driven />
	<!-- 配置通用的视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		id="internalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix" value="/WEB-INF/" />
		<!-- 后缀 -->
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
		<!-- 针对特定路径配置的拦截器 -->
			<mvc:mapping path="/helloWorld"/>
			<bean class="interceptor.MyInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>
	<!-- 异常处理 -->
	<bean id="" class="exception.MyExecption"></bean>
</beans>		
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

7.文件上传

<form action="${ pageContext.request.contextPath }/user/upload" method="post" enctype="multipart/form-data">
		<input type="file" name="partFile" value="上传"> 
		<input type="submit" value="提交">
	</form>


	@RequestMapping("/user/upload")
	public String upload(HttpServletRequest requese,MultipartFile partFile) throws IllegalStateException, IOException{
		String originalFilename = partFile.getOriginalFilename();
		if(originalFilename.endsWith(".txt")||originalFilename.endsWith(".jpg")){
			File file = new File("D:\\a\\"+originalFilename);
			partFile.transferTo(file);
			return "ok";
		}
		
		return "ok";
		
	}

springmvc.xml

<!-- 文件上传 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置上传文件的最大尺寸为5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
	</bean>

=================================================================

SpringMVC日期处理

前台:

<form action="${pageContext.request.contextPath }/user/testUser">
		姓名:<input type="text" name="userName" ><br>
		密码:<input type="password" name="passWord"></br>
		生日:<input type="date" name="birth"></br>
		<input type="submit" value="提交">
		
	</form>
java:

@RequestMapping("/user/testUser")
	public String testUser(User user){
		System.out.println(user.getBirth());
		return "ok";
	}



1.可以在实体类上加上注解@DateTimeFormat(pattern = "yyyy-MM-dd")

private String userName;
	private String passWord;
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date birth;
2.可在controller中加上方法

@InitBinder
    public void initBinder(WebDataBinder binder){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 严格限制日期转换
        sdf.setLenient(false);
        //true:允许输入空值,false:不能为空值 
        binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
    }

3.配置converter

import org.springframework.core.convert.converter.Converter;

public class DateConvert implements Converter<String, Date> {
	@Override
	public Date convert(String source) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try {
			return simpleDateFormat.parse(source);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

}

springmvc.xml

<!-- 配置注解驱动,如果配置此标签可以不用配置处理器映射器和适配器 -->
	<mvc:annotation-driven conversion-service="conversionService" />
	<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<property name="converters">
			<set>
				<bean class="convert.DateConvert"/>
			</set>
		</property>
	</bean>







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值