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

用户登录很简单,一个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";

}


这里主要讲异常处理。

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


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


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


接下来是[size=large][b]全局异常处理[/b][/size]

在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.


[size=large][b]静态文件[/b][/size]
由于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就可以访问了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值