用户登录很简单,一个get类型请求给用户返回一个登录界面,然后接受用户的登录数据,如果没错则将用户跳转到WEB-INF/jsp/user/list.jsp界面。
这里主要讲异常处理。
首先讲[size=large][b]局部异常处理[/b][/size]。
[b]1. 在UserController下加入以下方法:[/b]
[b]2.在WEB-INF/jsp下创建error.jsp文件[/b]
此时用户访问所产生的内部异常将不会抛出我们平时所见的exception stack,而是返回给用户error.jsp页面,并告知用户异常信息。
error.jsp这个页面我们就可以让美工自由发挥了。 -O-
接下来是[size=large][b]全局异常处理[/b][/size]
在hello-servlet.xml中加入:
加入全局异常以后,任何控制器里抛出的UserException都会被SpringMVC捕获并将页面跳转到WEB-INF/jsp/error.jsp页面。
对应的异常对象是exception.
[size=large][b]静态文件[/b][/size]
由于SpringMVC通过设置web.xml的servlet,捕获了所有路径。
这样一来,客户端就不能访问到css,jpg等文件。
因此必须采取相应的配置才能让用户访问这些文件。
在hello-servlet.xml中加入:
这样我们只要在webroot目录下创建一个resources目录,再将所有文件放入此目录,通过<%=path%>/resources/filename就可以访问了。
@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就可以访问了。