gpt4 book ai didi

java - 如何使用 JSP Servlet 登录设置 Tomcat 服务器

转载 作者:行者123 更新时间:2023-11-28 23:54:52 24 4
gpt4 key购买 nike

我试图让我网站上的用户在能够访问我的网页之前使用正确的凭据登录,因此我创建了一个简单的 servlet 登录来完成此操作。在 Eclipse 中我的 Web 项目中,它运行良好,但是当我尝试在我的 Amazon ec2 实例上运行它并输入凭据时,我收到此错误:源服务器没有找到目标资源的当前表示或者是不愿意透露它的存在。我认为这与我的 LoginCheck Java 类和我的 web.xml 文件的配置有关,因为在我添加 servlet 登录之前,我的网站可以正常工作。有什么建议吗?

索引.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>AWS Ads Updater</title>
</head>
<body>

<form method="post" action="LoginCheck">
<table>
<tr><td>Username</td><td><input type="text" name="uname"></td></tr>
<tr><td>Password</td><td><input type="password" name="password"></td></tr>
<tr><td></td><td><input type="submit" name="login"></td></tr>

</table>
</form>

</body>
</html>

登录检查.java

    package LoginCheck.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class LoginCheck
*/
@WebServlet("/LoginCheck")
public class LoginCheck extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public LoginCheck() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname");
String pass = request.getParameter("password");

if(uname.equals("user") && pass.equals("pass")) {
response.sendRedirect("LoginWorked.jsp");
} else {
response.sendRedirect("LoginFailed.jsp");
}

}

}

登录工作.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>AWS Ads Updater</title>
</head>
<body>
<p>Login worked</p>
</body>
</html>

登录失败.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>AWS Ads Updater</title>
</head>
<body>
<p>Login failed, please try again</p>
</body>
</html>

网络.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LoginCheck</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

最佳答案

您曾使用过 servlet,但您可以使用一个简单的类 java,并在 jsp 页面中声明您的逻辑,但这只是我的想法。

我认为问题出在 response.sendRedirect("LoginWorked.jsp");,我一直使用对象 RequestDispatcher 将请求重定向到另一个 servlet。页面 jsp 是 servlet 到你的情况下你有三个 servlet

  1. 登录检查.java
  2. LoginFailed_jsp.java
  3. LoginWorked_jsp.java

尝试使用对象 RequestDispatcher,因为您的配置似乎正确

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/LoginFailed.jsp");
try {
requestDispatcher.forward(request, response);
} catch (ServletException ex) {
ex.printStackTrace();
}

关于java - 如何使用 JSP Servlet 登录设置 Tomcat 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56604806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com