当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

SpringMVC入门 (五)用户登录以及异常处理,静态文件

发表于: 2013-12-08   作者:alleni123   来源:转载   浏览次数:
摘要: 用户登录很简单,一个get类型请求给用户返回一个登录界面,然后接受用户的登录数据,如果没错则将用户跳转到WEB-INF/jsp/user/list.jsp界面。 @RequestMapping(value="/login",method=RequestMethod.GET) public String login(){ return "login&qu
用户登录很简单,一个get类型请求给用户返回一个登录界面,然后接受用户的登录数据,如果没错则将用户跳转到WEB-INF/jsp/user/list.jsp界面。
@RequestMapping(value="/login",method=RequestMethod.GET)
	public String login(){
		return "login";
	}
	
	
	@RequestMapping(value="/login",method=RequestMethod.POST)
	public String login(String username, String password, HttpSession session){
		if(!users.containsKey(username)){
			throw new UserException("用户名不存在");
		}
		User u=users.get(username);
		if(!u.getPassword().equals(password)){
			throw new UserException("用户密码不正确");
		}
		session.setAttribute(username, u);
		return "redirect:/user/users";
		
	}


这里主要讲异常处理。

首先讲 局部异常处理
1. 在UserController下加入以下方法:
//局部异常处理,只能处理这个控制器中的异常.
	@ExceptionHandler(value={UserException.class})
	public String handlerException(UserException ue,HttpServletRequest req){
	    req.setAttribute("exception", ue);
	    return "error";
	}


2.在WEB-INF/jsp下创建error.jsp文件
 <body>
    <h1>${exception.message}</h1>
  </body>


此时用户访问所产生的内部异常将不会抛出我们平时所见的exception stack,而是返回给用户error.jsp页面,并告知用户异常信息。
error.jsp这个页面我们就可以让美工自由发挥了。 -O-



接下来是 全局异常处理

在hello-servlet.xml中加入:
	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
			<!--这里必须要写SimpleMappingExceptionResolver里的元素名称:private Properties exceptionMappings; -->
			<property name="exceptionMappings">
				<props>
				 <!-- 要映射的异常类 -->
					<prop key="com.lj.model.UserException">error</prop>
				</props>
			</property>
		</bean>


加入全局异常以后,任何控制器里抛出的UserException都会被SpringMVC捕获并将页面跳转到WEB-INF/jsp/error.jsp页面。
对应的异常对象是exception.



静态文件
由于SpringMVC通过设置web.xml的servlet,捕获了所有路径。
<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

这样一来,客户端就不能访问到css,jpg等文件。
因此必须采取相应的配置才能让用户访问这些文件。

在hello-servlet.xml中加入:
	<!-- 将静态文件制定到某个特殊的文件夹中统一处理 -->
		<mvc:resources location="/resources/" mapping="/resources/**"/>

这样我们只要在webroot目录下创建一个resources目录,再将所有文件放入此目录,通过<%=path%>/resources/filename就可以访问了。


SpringMVC入门 (五)用户登录以及异常处理,静态文件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
业务场景很简单,就是在一个j2ee的web应用里同时需要两种异常处理,一种是restful的返回json异常,一
今天,打算写个简单的SpringMVC和json的使用案例, 发现,SpringMVC的dispatcher-servlet也会拦截静态
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号