登录页面的文件为web目录下的indexjsp和web同级目录下的src目录中有包guidaday01包下有LoginFilterLoginServlet两个类用上述文件加上webxml文件写一个Java Web的session登录拦截程序给出程序所有需要的文件及其代码登录成功时弹窗提示登录失败时使用PrintWriter重定向到页面显示登录失败不可再新建其他文件
下面是一个满足要求的Java Web的session登录拦截程序的代码示例:
- 创建一个名为index.jsp的登录页面文件,位于web目录下:
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<form action="login" method="POST">
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
- 创建一个名为LoginFilter的过滤器类,位于src/guida/day01包下:
package guida.day01;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter(filterName = "LoginFilter", urlPatterns = {"/login"})
public class LoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username != null && password != null && username.equals("admin") && password.equals("admin")) {
request.getSession().setAttribute("username", username);
chain.doFilter(req, resp);
} else {
req.getRequestDispatcher("login-failed.jsp").forward(req, resp);
}
}
public void init(FilterConfig config) throws ServletException {
}
}
- 创建一个名为LoginServlet的Servlet类,位于src/guida/day01包下:
package guida.day01;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "LoginServlet", urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\">");
out.println("alert('Login successful. Welcome, " + username + "!');");
out.println("location='index.jsp';");
out.println("</script>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
- 创建一个名为web.xml的配置文件,位于web目录下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Java Web Login</display-name>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>guida.day01.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/login</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>guida.day01.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
这样,当用户提交登录表单时,LoginFilter会验证用户名和密码是否正确。如果正确,会将用户名保存到session中,并将请求传递给LoginServlet,LoginServlet会弹出一个提示框显示登录成功信息。如果验证失败,LoginFilter会将请求重定向到login-failed.jsp页面,该页面显示登录失败信息。
原文地址: https://cveoy.top/t/topic/jg0T 著作权归作者所有。请勿转载和采集!