JSP登陆问题

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'Login.jsp' starting page</title>

</head>

<body>
<form action="Login.jsp" method="post">
<tr>
<td>用户名 :</td>
<td><input type="text" name ="logname"></td>

</tr>

<tr>
<td>密码 :</td>
<td><input type="password" name ="password"></td>

</tr>

<tr>
<td colspan="2"><input type="submit" value="提交 "></td>

</tr>

</form>
<%
String logname = request.getParameter("logname");
String password= request.getParameter("password");
if(logname.equals("admin")&&password.equals("root"))

{
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("fault.jsp");
}

%>
</body>
</html>
这是我写的简单的JSP登录代码程序,若输入账号为:admin 密码为:root则跳转到success.jsp,若错误,则跳转到fault.jsp页面
下面是报错信息

org.apache.jasper.JasperException: Exception in JSP: /Login.jsp:39

36: <%
37: String logname = request.getParameter("logname");
38: String password= request.getParameter("password");
39: if(logname.equals("admin")&&password.equals("root"))
40:
41: {
42: response.sendRedirect("success.jsp");

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

java.lang.NullPointerException
org.apache.jsp.Login_jsp._jspService(Login_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

第1个回答  2009-11-01
把你在JSP中写的小脚外层加上:if(request.getParameter("logname")!=null&&request.getParameter ("password")!=null){}就可以了
即:

if(request.getParameter("logname")!=null&&request.getParameter ("password")!=null){
String logname = request.getParameter("logname");
String password= request.getParameter("password");
if(logname.equals("admin")&&password.equals("root"))

{
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("fault.jsp");
}
}

至于你所写的代码会报错的原因,是因为你都写在了同一个页面里面,当你首次加载Login.jsp页面的时候下边的小脚本也会执行,而你又没有给其值,所以会在你的39行报出异常
第2个回答  2009-10-31
String logname = request.getParameter("logname");
38: String password= request.getParameter("password");
你这里先打印一下logname.和password...看哪个是空指针??
或者这里
if(logname.equals("admin")&&password.equals("root"))

if(logname != null && logname.equals("admin") && password != null && password.equals("root"))本回答被网友采纳
第3个回答  2009-10-31
你先试试楼上的,做法吧。还是不行的话,你再尝试用 <jsp:forward page="success.jsp"/>来跳转,或则
<jsp:include page="success.jsp"/>来跳转。
第4个回答  2009-11-04
这个是空指针的问题,你在获取logname和password的值时,应该判断以下是否为空。