81,092
社区成员
发帖
与我相关
我的任务
分享
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
public class MyExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// TODO Auto-generated method stub
//同一处理异常
Map<String, Object> model = new HashMap<String, Object>();
model.put("ex", ex);
System.out.println("异常信息:"+ex.getMessage());////当出现异常时,可以输出异常信息,在后台[/color]
return new ModelAndView("error", model); //但是,这句没有转到error.jsp页面!!!为善么啊 ![/color]
}
}
<!-- 定义视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 设置spring的非检查型数据访问异常 -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"></bean>
<!-- 设置全局异常处理bean -->
<bean id="exceptionHandler" class="cn.csai.zhang.test.hibernate.myException.MyExceptionHandler"></bean>
@Controller
public class UserHomeController {
@Inject
private IHomeService homeService;
@RequestMapping("/jsp/userhome")
public String showUserHomePage(HttpSession session, Map<String , Object> model){
String currentUsername=(String)session.getAttribute("currentUser");
User user=homeService.getUserByUsername(currentUsername);
model.put("return_user", user);
return "userhome";///可以正确转到视图
}
}
@ExceptionHandler({MaxUploadSizeExceededException.class,SizeLimitExceededException.class})
public void handleException(Exception ex, HttpServletRequest request, HttpServletResponse response){
Enumeration<?> names = request.getAttributeNames();
while(names.hasMoreElements()){
String name = (String)names.nextElement();
System.out.println(name + "\t" + request.getAttribute(name));
}
Responses.writeJavaScript(response, "alert('错误:上传的文件太大。单个文件不能超过10M');history.back();");
}
这个方法可以放在任何一个Controller里,写一次就行。