我无法运行我的程序。它应该将信息从JSP页面获取到servlet,这样就可以通过java类中的方法进行验证。然后,经过验证后,servlet确定是将消息发送到上一个JSP页面还是发送到成功的JSP页面。当我运行这个程序时,它会把我带到注册器。jsp页面。我输入信息,然后点击提交。它把我拖到了404找不到的页面。该链接说它正在尝试将我指向CreateUser。JavaServlet。它不应该那样做。任何帮助都将不胜感激,无论是我可以找到信息的链接还是一些实际的解决方案帮助。非常感谢。
>
@WebServlet(name = "createUser", urlPatterns = {"/createUser"})
public class CreateUser extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param req
* @param resp
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("in process login.java");
ServletContext context = getServletContext();
// Extract password and id from login.jsp form
String userName = req.getParameter("USERNAME");
String password = req.getParameter("PASSWORD");
String answerOne = req.getParameter("ANSWERONE");
String answerTwo = req.getParameter("ANSWERTWO");
String answerThree = req.getParameter("ANSWERTHREE");
Boolean duplicateUser = User.verifyUserExists(userName);
HttpSession session = req.getSession();
if (duplicateUser) {
req.setAttribute("MESSAGE", "UserName is in use. Try again");
context.getRequestDispatcher("/RegisterUser.jsp").forward(req, resp);
}
else{
User user = new User(userName, password, answerOne, answerTwo, answerThree);
user.addUser(user);
req.getRequestDispatcher("RegistrationSuccessful.jsp").forward(req, resp);
}
}
}
注册User.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<body>
<H1>New User Registration</H1>
<H3>Required Information</H3>
<FORM name="CREATE" action="servlets/CreateUser.java" method="POST" >
<table>
<tr>
<td>Username:</td>
<td><INPUT name="USERNAME" maxlength="50" size="40" type="text" ></TD>
</tr>
<tr>
<td>Password:</td>
<td><INPUT name="PASSWORD" maxlength="50" size="40" type="password" ></td>
</tr>
<tr>
<td>Favorite Vacation Spot:</td>
<td><INPUT name="ANSWERONE" maxlength="50" size="40" type="text" ></TD>
</tr>
<tr>
<td>Mother's Maiden Name:</td>
<td><INPUT name="ANSWERTWO" maxlength="50" size="40" type="text" ></TD>
</tr>
<tr>
<td>First Pet's Name:</td>
<td><INPUT name="ANSWERTHREE" maxlength="50" size="40" type="text" ></TD>
</tr>
<tr>
<td><input type="submit" name="Register" value="Register" onClick = "CreateUser.java"></td>
<td></td>
</tr>
</table>
</FORM>
<p>${MESSAGE}</p>
</BODY>
</HTML>
公共类用户{
private String userName;
private String password;
private String answerOne;
private String answerTwo;
private String answerThree;
private static File file = new File("C:\\Users.txt");
@SuppressWarnings("OverridableMethodCallInConstructor")
public User(String un, String pw, String a1, String a2, String a3) {
setUserName(un);
setPassword(pw);
setAnswerOne(a1);
setAnswerTwo(a2);
setAnswerThree(a3);
}
public void addUser(User user) throws IOException {
FileWriter fw = new FileWriter(getFile());
try (BufferedWriter bfw = new BufferedWriter(fw)) {
bfw.write(user.userName);
bfw.write(user.password);
bfw.write(user.answerOne);
bfw.write(user.answerTwo);
bfw.write(user.answerThree);
bfw.newLine();
}
}
public static boolean verifyUserExists(String userName) throws FileNotFoundException {
Scanner scannedFile = new Scanner(getFile());
while (scannedFile.hasNext()) {
String search = scannedFile.next();
return search.equals(userName);
}
return false;
}
public static Boolean verifyPassword(String userName, String password) throws FileNotFoundException {
Scanner scannedFile = new Scanner(getFile());
while (scannedFile.hasNext()) {
String search = scannedFile.next();
if (search.equals(userName)) {
return scannedFile.nextLine().equals(getMD5(password));
}
}
return false;
}
public static String getMD5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
String hashtext = number.toString(16);
// Now we need to zero pad it if you actually want the full 32 chars.
while (hashtext.length() < 32) {
hashtext = "0" + hashtext;
}
return hashtext;
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
public static File getFile() {
return file;
}
使用
action="createUser" OR action="./createUser"
action=“/createUser”将调用默认上下文的URL
http://localhost:8084/createUser
而action=“./createUser”将在当前目录/上下文中调用servlet的URL模式
http://localhost:8084/ContextName/createUser
在我的java web项目中,我有四个包,即com.hrms.model、com.hrms.service、com.hrms.servlet、com.hrms.utility。在MODEL中,我有基类project、employee和training及其属性和geters和seters来检索数据。 在服务方面,我有服务实现接口,它的实现是; 在getEmployee.jsp中 在listemplo
我有一个jsp页面和一个servlet,在jsp页面中我有两个表单,每一个都是选择输入类型,即选择class和选择student。当我从select下拉菜单中选择class时,通过onchange事件,它将转到abcServlet,从servlet中检索该类,并将其转发到jsp页面,转到jsp页面中的下一个表单,select student,它再次提交到同一个servlet,从他们的servlet
这是我第一次设置Java Servlet,我试图在用户单击特定按钮时从JSP表单中的输入字段检索值到Java Servlet中。我还不确定是否使用了正确的做法来创建Servlet。我只需右键单击Apache Tomcat 8.0服务器,然后选择新的Servlet。 JavaServlet: JSP:
问题内容: 我已经使用应用引擎创建了一个Java Web Servlet,该Servlet向数据库发出了请求。我已经使用本地数据库在本地测试了servlet,并且运行良好,然后继续在本地测试了servlet,但是我访问了Cloud SQL数据库,但是也运行得很好。 我部署servlet后出现了我的问题。部署后,所有数据库请求都将返回以下内容: 我在云控制台中进行了检查,并且我的应用已正确添加到访问
我研究一个简单的问题已经有相当长的时间了。在包括这个网站在内的许多论坛上搜索了很多,但仍然无法解决这个问题。因此请求您的帮助。 我有一个带有文本区域和提交按钮的JSP页面。 在Servlet类中,我执行以下操作- 因此,在我点击提交按钮后,我的请求将转到servlet,并从servlet返回到原始的jsp,但我无法用servlet输出填充文本区域。我已经尝试了很多方法,就像我在互联网上发现的那样,