Jsp+Servlet+JavaBean三层架构异常处理如何解决?

yw64213236 2011-03-08 08:07:48
基本情况说明:
MyEclips版本:Version: 6.5.1 GA
web.xml设置异常处理代码如下:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>

error.jsp部分代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
......
<title>在线知识仓库——Error页面</title>
......
<body>
<%=exception.getMessage() %>
</body>


login.jsp 登录界面,用户提交表单数据到一个LoginServlet
LoginServlet负责进行用户名和密码的验证,该验证又需要调用DBhelp.java获取数据库连接.
DBhelp.java代码如下:

public class DBHelp {
public Connection getConn(){
Connection conn = null;
String dbURL = "jdbc:mysql://127.0.0.1/LoreDepot";

try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL,"root","");
} catch (ClassNotFoundException e) {

} catch (SQLException e) {
throw new RuntimeException("Error:数据库连接失败!");
}
return conn;
}
}


我希望做到的效果:
在登录系统的如果产生异常,系统会跳转到error.jsp页面显示相关信息。
我面临的问题是:
可是当我关闭Mysql服务的时候,系统能够跳转到error.jsp,但是该页面显示的中文为乱码。
如果我直接访问error.jsp页面,中文字符为正常显示。
如果我从MyEclipse里面导出项目单独部署在Tomcat中,通过登录自动跳转到error.jsp就会正常显示。

具体问题如下,求高手指点:
1.以上描述产生异常后跳转到error.jsp页面乱码如何解决?是MyEclipse的问题?还是我哪个地方弄错了?
2.在JSP+Servlet+JavaBean的三层架构里面,Servlet和JavaBean中的抛出一个RuntimeException,然后一个JSP错误页面去提示错误信息,是否合理?如果不合理,怎样解决比较有效?
...全文
287 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
licip 2011-03-09
  • 打赏
  • 举报
回复
你写一个过虑器来解决乱码,当然,这个过虑器只对post方式有用,如果你还要对get方法的编码,需要用server.xml配置文件中找到Connector节点,然后加一个URIEncoding=gbk或者其它的编码来解决。
a404125339 2011-03-09
  • 打赏
  • 举报
回复
乱码问题,网上一搜多的是额,一种是使用过滤器,一种是使用字节,一种是在tomcat中进行设置,网上搜哦,事事都问,也不好额。至于第二个问题,是代码问题一般都不要在jsp中体现,ok
emon123 2011-03-09
  • 打赏
  • 举报
回复
写个编码过滤器!~
yw64213236 2011-03-09
  • 打赏
  • 举报
回复
......
怎么没有人帮忙解答下?
是我没描述清楚呢?还是高手都没空呢?
郁闷。。。。
热带鱼2020 2011-03-09
  • 打赏
  • 举报
回复
搂住研究一下 Jsp+Servlet+JavaBean 后,就赶快作些 ssh2 的例子吧。
shanshu12 2011-03-09
  • 打赏
  • 举报
回复
1.设置JSP页面编码为GBK:<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
2.编写过滤器,设置编码格式:
public class EncodingFilter implements Filter{

/*
* 对应配置文件的默认语言编码
*/
private String defaultEncoding = null;

@Override
public void init(FilterConfig filterConfig) throws ServletException
{
this.defaultEncoding = filterConfig.getInitParameter("defaultencoding");
}

@Override
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)throws IOException, ServletException
{
request.setCharacterEncoding(defaultEncoding);
//System.out.println("filter works.CharacterEncoding:"+this.defaultEncoding);
chain.doFilter(request,response);

}
@Override
public void destroy()
{
this.defaultEncoding = null;
}


}

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧