得到404或500之类的转到错误页面上并显示错误信息

41.  在ShowAddItemServlet这个servlet里面的doGet里面写:
try{

}catch(AppException e){
//如果出了这个异常了就转到
req.setAttribute("errorMsg",e.getMessage());这里面已经携带了比较完整的错误信息了,你也可以这样
req.setAttribute("errorMsg",“XXX错误”);

req.getRequestDispatcher("error.jsp").forward(request,response);
我现在转发到这个页面里,在这个页面里我想拿出来,就就得把错误信息设置到reqeust里面啊
}


42.  在错误提示页面上
<font color='red' ><%=request.getAttribute("errorMsg")%></font>
如果是Null显示应该是空串的
<font color='red' ><%=request.getAttribute("errorMsg")==null?"":request.getAttribute("errorMsg")%></font>

现在显示的是在逻辑层的catch()里面设置的异常信息,不人性化,现在我不想显示原来的异常信息,
我想改在servlet里面的catch()里面可以这样写
就在上面的代码处改成
req.setAttribute("errorMsg",“系统出现错误,请联系管理员”);这样就好多了,



如果使用重定向的话,本来重定向过去的页面上你是拿不到值的,你硬要拿你得这么 干

46.  
response.sendRedirect(req.getContextPath()+"/basedata/item_main.jsp?errorMsg="+e.getMessage());现在你就可以拿到了,

47.  你现在就不能用request.getAttribute()了,你得用<%=reqeust.getParameter("errorMsg")==null?"":reqeust.getParameter("errorMsg");%>


48.  现在显示的错误信息乱码了,因为这个是get提交过去的。请记住:get提交后面尽量不提交中文,你得再编一下码
response.sendRedirect(req.getContextPath()+"/basedata/item_main.jsp?errorMsg="+java.net.URLEncoder.encode(e.getMessage()));现在还是乱码啊,但是乱码的东西变了,你现在提交过去的是iso8859-1,现在读的时候还得转一下,在页面上拿的时候再转一下。

<%=reqeust.getParameter("errorMsg")==null?"":new String(reqeust.getParameter("errorMsg").getBytes("ISO-8859-1"),"GB18030";%>
ISO-8859-1这样拿过来的,你还得转成gb18030的啊

49.  你用重定向的话,但是你又想带点东西过去,你写地址的时候你就带点东西过去吧,


50.  你看上面 这种方式多麻烦啊,现在改tomcat让步tomcat帮我们把iso-8859-1自动转成gb18030
这个东西我知道改的,其实这种改法,在tomcat的帮助文档里面都可以找到,就在那个config目录下的http.html文档里面可以看到


51.  你像上面这么一配,你就可以直接拿就可以了,
<%=reqeust.getParameter("errorMsg")==null?"":reqeust.getParameter("errorMsg");%>就这样写不会有问题了。但是注意你在servlet里面刚才那样写的编码,你该编码你还得编码。


52.  Filter设置字符集对get不起作用,我们处理get提交乱码通常可以考虑改变服务器的配置,如tomcat需要修改server.xml文件。


53.  现在处理异常的方式还是比较麻烦 ,你要一个一个地设置,一个一个地处理,下面采用自动的异常处理方式,你出异常自动跑到相应的处理页面上去。就是声明式异常。这就是声明式服务的强大之处。

你可能感兴趣的:(tomcat,jsp,.net,servlet,配置管理)