李老师,你好,我是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="提交">
<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也能够显示那么多的???呢?希望老师能为我解决这个困惑??
----------------------------------------------
一直被模仿,从未被超越!
我实在没有看懂你说的意思,如“当是为什么servlet也能够显示那么多的???”
你课间找我吧
我已经找到问题的解决方法了!