使用servlet从我的JSP页面获取值时出现问题

使用servlet从我的JSP页面获取值时出现问题,jsp,servlets,Jsp,Servlets,我试图从我的注册表中获取详细信息,使用servlet,然后显示所有现有用户。 我知道我在servlet中出错了。我真的不知道在哪里 这是我的注册表 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;

我试图从我的注册表中获取详细信息,使用servlet,然后显示所有现有用户。 我知道我在servlet中出错了。我真的不知道在哪里

这是我的注册表

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Registration</title>
    </head>
    <body>
        <form method="post" action="UserController.java">
            <center>
            <table border="1" width="30%" cellpadding="5">
                <thead>
                    <tr>
                        <th colspan="2">Enter Information Here</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>First Name</td>
                        <td><input type="text" name="fname" value="" /></td>
                    </tr>
                    <tr>
                        <td>Last Name</td>
                        <td><input type="text" name="lname" value="" /></td>
                    </tr>
                    <tr>
                        <td>Email</td>
                        <td><input type="text" name="email" value="" /></td>
                    </tr>
                    <tr>
                        <td>User Name</td>
                        <td><input type="text" name="uname" value="" /></td>
                    </tr>
                    <tr>
                        <td>Password</td>
                        <td><input type="password" name="pass" value="" /></td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="Submit" /></td>
                        <td><input type="reset" value="Reset" /></td>
                    </tr>
                    <tr>
                        <td colspan="2">Already registered!! <a href="index.jsp">Login Here</a></td>
                    </tr>
                </tbody>
            </table>
            </center>
        </form>
    </body>
</html>
编辑1:

else if (act!=null && !act.equalsIgnoreCase("null") &&    act.equalsIgnoreCase("register")){
        forward = LIST_USER;
        request.setAttribute("users", dao.getAllUsers());
传递了一个操作寄存器以保存doGet方法中的值。 如何在dopost中进行相应修改?

更改此选项:

details.setUsername(request.getParameter("username"));
details.setPassword(request.getParameter("password"));
为此:

details.setUsername(request.getParameter("uname"));
details.setPassword(request.getParameter("pass"));
输入的名称必须与您获得的请求参数的名称匹配

编辑:一些基本建议:

不要为了存储而直接访问请求参数,准备一个简单的实用程序函数来处理空值。未发出时,请求参数将为null,但如果发出为空,则将为“”

为您的请求参数名称枚举公共静态字符串常量,在代码中使用魔术字符串可能会导致对其失去控制:

public static String PARAM_USERNAME = "uname";
public static String PARAM_PASSWORD = "pass";
如果一个参数是必需的,只需检查它是否具有实际值并处理错误/情况,在servlet中存在原始异常可能是以后调试的难点

预见一个请求转储方法(将其保存在实用程序类中),只需注销所有请求参数、属性和HTTP头,就可以在调试时避免大量这种情况

EDIT2:尝试调用此doPost方法,看看会发生什么(将参数的名称更改为正确的名称):

protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
PrintWriter out=response.getWriter();
试一试{
out.println(“倾销请求”);
枚举paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
字符串paramName=(字符串)paramNames.nextElement();
字符串paramValue=request.getParameter(paramName);
out.println(“+paramName+”:“+paramValue”);
}
//用户=新用户();
//详细信息=新的详细信息();
//user.setFirstName(request.getParameter(“firstName”);
//user.setLastName(request.getParameter(“lastName”);
//setUsername(request.getParameter(“用户名”));
//setPassword(request.getParameter(“密码”));
//details.setId(request.getParameter(“id”);
//String str=request.getParameter(“用户名”);
//字符串str1=request.getParameter(“密码”);
//if(str.equalsIgnoreCase(“shreya”)和str1.equalsIgnoreCase(“singh”))
//System.out.println(“登录!”);
//否则
// {
//System.out.println(“登录失败!”);
//setAttribute(“用户”,dao.getAllUsers());
//request.getRequestDispatcher(“/listUser.jsp”).forward(请求,响应);
// }
}捕获(可丢弃的t){
println(“servlet中的异常”);
t、 打印跟踪(输出);
}
}

它给我一个错误,说请求的资源不可用启动应用程序服务器,并检查其日志中的错误。可能您的代码进入了NullPointerException,因此出现了错误页面。我更改了参数名称,但它仍然给我一个错误,另外我需要通过servlet传递一个操作来访问DetailsBug。您必须找到doPost引发异常的位置。尝试访问请求参数并在response.getWriter()上转储它们。我尝试通过servlet传递一个操作,但仍然不起作用
public static String PARAM_USERNAME = "uname";
public static String PARAM_PASSWORD = "pass";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    PrintWriter out = response.getWriter();
    try {
        out.println("Dumping Request");
        Enumeration<?> paramNames = request.getParameterNames();
        while (paramNames.hasMoreElements()) {
            String paramName = (String)paramNames.nextElement();
            String paramValue = request.getParameter(paramName);
            out.println("   " + paramName + ": " + paramValue);
        }

        // User user = new User();
        // Details details = new Details();
        // user.setFirstName(request.getParameter("firstName"));
        // user.setLastName(request.getParameter("lastName"));
        // details.setUsername(request.getParameter("username"));
        // details.setPassword(request.getParameter("password"));
        //  details.setId(request.getParameter("id"));
        // String str = request.getParameter("username");
        // String str1 = request.getParameter("password");

        // if (str.equalsIgnoreCase("shreya") && str1.equalsIgnoreCase("singh"))
        //     System.out.println("Login!");
        // else
        // {
        //     System.out.println("Login failed!");    
        //     request.setAttribute("users", dao.getAllUsers());    
        //     request.getRequestDispatcher("/listUser.jsp").forward(request, response);    
        // }
    } catch (Throwable t) {
        out.println("Exception in servlet");
        t.printStackTrace(out);
    }
}