使用servlet从我的JSP页面获取值时出现问题
我试图从我的注册表中获取详细信息,使用servlet,然后显示所有现有用户。 我知道我在servlet中出错了。我真的不知道在哪里 这是我的注册表使用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;
<%@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);
}
}