Java 无法执行servlet代码
在开发servlet程序时,我遇到了一个问题,我使用了netbeanside和glassfish服务器 以下是我的index.html文件代码:-Java 无法执行servlet代码,java,jsp,servlets,Java,Jsp,Servlets,在开发servlet程序时,我遇到了一个问题,我使用了netbeanside和glassfish服务器 以下是我的index.html文件代码:- <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the t
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<body>
<form action="NewServlet">
name:<input type="text" name="t1">
password:<input type="password" name="t1">
<input type="submit" value="login">
</form>
</body>
</html>
姓名:
密码:
servlet的代码是:-
import java.io.*;
import javax.servlet.*;
/**
*
* @author Prathamesh
*/
public class NewServlet extends GenericServlet {
@Override
public void service(ServletRequest req,ServletResponse res)throws ServletException,IOException
{
res.setContentType("text/html");
PrintWriter pw=res.getWriter();
String un="abc";
String pwd="xyz";
String p1=req.getParameter("t1");
String p2=req.getParameter("t2");
if((p1.equals(un))&&(p2.equals(pwd)))
pw.println("<h1>Welcome to home page</h1>");
else
pw.println("Invalid");
pw.close();
}
}
import java.io.*;
导入javax.servlet.*;
/**
*
*@作者Prathamesh
*/
公共类NewServlet扩展了GenericServlet{
@凌驾
公共无效服务(ServletRequest-req、ServletResponse-res)抛出ServletException、IOException
{
res.setContentType(“文本/html”);
PrintWriter pw=res.getWriter();
字符串un=“abc”;
字符串pwd=“xyz”;
字符串p1=req.getParameter(“t1”);
字符串p2=req.getParameter(“t2”);
如果((p1.等于(un))&&(p2.等于(pwd)))
println(“欢迎访问主页”);
其他的
pw.println(“无效”);
关闭();
}
}
我认为问题是在解析变量时发生的。。。
请有人能帮我吗??
索引文件也可以完美执行,但当我直接单击按钮而不在文本框中键入任何内容时,它会显示正确的输出,但当我输入程序(abc&xyz)中指定的用户名和密码时,它会显示错误:
HTTP状态500-内部服务器错误
类型异常报告
消息内部服务器错误
说明服务器遇到内部错误,无法满足此请求
例外情况
java.lang.NullPointerException
请注意,GlassFish Server开源版本4.1日志中提供了异常及其根本原因的完整堆栈跟踪。
GlassFish Server开源版本4.1
GenericServlet
用于协议独立的servlet。对于Web,请使用HttpServlet
。因此,您应该扩展HttpServlet
而不是GenericServlet
并重写doGet
或doPost
方法。由于您有密码字段,所以重写doPost
方法,出于安全原因,建议使用该方法。然后在web.xml
上配置servlet或使用@WebServlet
注释
@WebServlet
public class NewServlet extends HttpServlet{
public void doPost(...){}
}
在表单中,您需要定义post
方法
<form action="NewServlet" method="post">
...
</form>
...
这里的问题是您未能将正确的名称传递给密码字段:
password:<input type="password" name="t1">
用html试试这个
password:<input type="password" name="t2">
密码:
HTML无法区分名称的name=t1
和密码的name=“t1”
。尝试将其更改为t1
和t2
。在代码中,您没有向servlet发送任何t2
。还可以尝试使用HttpServlet代替GenericServlet。谢谢您的帮助……为我幼稚的错误感到抱歉……现在它正在运行perfectly@PrathameshKoshti,请接受答案,因为它对您有效
password:<input type="password" name="t2">