课外天地 李树青学习天地JavaEE网站开发课件 → 关于J2EE中servlet向jsp转发出现的异常?


  共有17309人关注过本帖树形打印复制链接

主题:关于J2EE中servlet向jsp转发出现的异常?

帅哥哟,离线,有人找我吗?
海军
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:104 威望:0 精华:0 注册:2008/9/27 22:38:53
关于J2EE中servlet向jsp转发出现的异常?  发帖心情 Post By:2009/6/4 19:42:27 [只看该作者]

李老师,你好,我是NIIT班的一个学生,我在写最后的购物车作业的时候,帮人家查看一个代码的时候,出现了一个问题,我请教了好多同学都没有发现怎么解决这个问题。

我做了一个简单的实验:我写了三个jsp跟一个servlet,模拟用户登录

login.jsp:

<%@ page language="java" c%>

<html>
<head>
<title>登陆</title>
</head>

<body>
<h3><font color="#FF0000"><strong>用户登陆</strong></font></h3>

<!-- 登录信息填写表单 -->
<form name="form" method="post" action="LoginServlet">
<table>
<tr>
  <td align="left"><strong>用户姓名:</strong></td>
  <td><input type="text" name="username"></td>
</tr>
<tr>
  <td align="left"><strong>用户密码:</strong></td>
  <td><input type="password" name="password"></td>
</tr>
<tr>
  <td align="left"><input type="submit" name="Submit" value="提交">&nbsp;&nbsp;
  <input type="reset" name="reset" value="重置"></td>
</tr>

</table>
</form>

</body>
</html>

LoginServlet:

package Servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javabeans.Student;
import javabeans.User;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import services.AdministratorService;
import services.StudentService;

/**
* Servlet implementation class for Servlet: LoginServlet
*
*/
public class LoginServlet extends javax.servlet.http.HttpServlet implements
  javax.servlet.Servlet {
static final long serialVersionUID = 1L;

/*
  * (non-Java-doc)
  *
  * @see javax.servlet.http.HttpServlet#HttpServlet()
  */
public LoginServlet() {
  super();
}

/*
  * (non-Java-doc)
  *
  * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
  *      HttpServletResponse response)
  */
protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  PrintWriter out = response.getWriter();
  response.setContentType("text/html;cherset=GBK");
  
  HttpSession session = request.getSession(true);
  request.setCharacterEncoding("gbk");
  
  System.out.print("1");
  ServletContext servletContext = this.getServletContext();
  System.out.print("2");
  StudentService ss = (StudentService) servletContext
    .getAttribute("studentSrvc");

  AdministratorService as = (AdministratorService) servletContext
    .getAttribute("adminSrvc");

  System.out.print("3");
  String username = "";
  String password = "";
  username = new String(request.getParameter("username").getBytes(
    "ISO-8859-1"), "GBK");

  password = new String(request.getParameter("password").getBytes(
    "ISO-8859-1"), "GBK");
  System.out.print(username);
  System.out.print(password);
  System.out.print("4");

  User user = null;
  user = ss.getUser(username, password);
  System.out.print(user.getUsername());

  if (user != null) {
   if (user instanceof Student) {
    session.setAttribute("user", user);
    try {
     System.out.print("5");
     RequestDispatcher disp = request
       .getRequestDispatcher("admin.jsp");

     disp.forward(request, response);

    } catch (Exception e) {

     e.printStackTrace();
    }
   }

  }

}

/*
  * (non-Java-doc)
  *
  * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
  *      HttpServletResponse response)
  */
protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  doGet(request, response);
}
}

其中数据库是能成功获取的;

如果成功登陆的话会转发到admin.jsp这个网页中:

admin.jsp:

<%@page language="java" c %>  
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h3>欢迎你:<jsp:getProperty name="user" property="username"/></h3>
<ul>
<li><a href="admin_gradescore.jsp">给学生评定成绩</a></li>
<li><a href="admin_browseuserinfo.jsp">查看学生信息</a></li>
<li><a href="admin_browseuserscore.jsp">查看学生成绩</a></li>
<li><a href="admin_browseusercredit.jsp">查看学生学分</a></li>
<li><a href="admin_browserscscore.jsp">查看某门课程成绩</a></li>
<li><a href="admin_browsescinfo.jsp">查看某门课的选课情况</a></li>
<li><a href="admin_addcourse.jsp">添加课程</a></li>
<li><a href="admin_deletescore.jsp">删除课程</a></li>
<li><a href="admin_deleteuserinfo.jsp">删除学生信息</a></li>
<li><a href="logout.jsp">注销</a></li>
</ul>

</body>
</html>

问题就出现了;当我输入用户为lj,密码为lj时,此时浏览器的url为:http://localhost:8088/LJ/LoginServlet

<!--StartFragment --> 图片点击可在新窗口打开查看

但是如果我改成http://localhost:8088/LJ/admin.jsp时,又能够正常的现实,还能获取我一开始在servlet中设置的session里面的值。

<!--StartFragment --> 图片点击可在新窗口打开查看

感觉就好像servlet没有转到admin.jsp中,当是为什么servlet也能够显示那么多的???呢?希望老师能为我解决这个困惑??



----------------------------------------------
一直被模仿,从未被超越!

[此贴子已经被admin于2010-12-12 18:09:07编辑过]


一直被模仿,从未被超越!
 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1938 积分:26572 威望:0 精华:34 注册:2003/12/30 16:34:32
回复  发帖心情 Post By:2009/6/6 17:18:06 [只看该作者]

我实在没有看懂你说的意思,如“当是为什么servlet也能够显示那么多的???”

你课间找我吧


 回到顶部
帅哥哟,离线,有人找我吗?
海军
  3楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:104 威望:0 精华:0 注册:2008/9/27 22:38:53
  发帖心情 Post By:2009/6/6 22:11:08 [只看该作者]

我已经找到问题的解决方法了!



一直被模仿,从未被超越!
 回到顶部