当前位置: 首页 > 知识库问答 >
问题:

.JSP和servlet连接到。java类

邰伟彦
2023-03-14

我无法运行我的程序。它应该将信息从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>
  1. 用户。java类

公共类用户{

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;
    }

共有1个答案

翟曦
2023-03-14

使用

 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输出填充文本区域。我已经尝试了很多方法,就像我在互联网上发现的那样,