1、新建Web项目。 2、加入前端登录界面 3、创建LoginServlet程序。 4、创建LoginFilter程序。全部代码及步骤
时间: 2023-12-30 21:02:25 浏览: 69
好的,下面是详细的步骤和代码:
1. 新建Web项目
在你的IDE中新建一个Web项目,比如Eclipse中新建一个Dynamic Web Project,取名为"WebLogin"。在项目结构中,新建一个名为"WebContent"的文件夹,用来存放前端页面和其他资源文件。
2. 加入前端登录界面
在WebContent文件夹下新建一个名为"login.html"的文件,作为前端登录界面。下面是一个简单的登录界面的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="login" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
在这个页面中,我们用一个简单的表单来获取用户的用户名和密码,然后将表单数据提交到名为"login"的Servlet程序中。
3. 创建LoginServlet程序
在"src"文件夹下新建一个名为"LoginServlet.java"的Java类,用来处理用户登录请求。下面是这个类的代码:
```java
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;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("123456")) {
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("error.jsp");
}
}
}
```
在这个Servlet程序中,我们首先从请求中获取用户提交的用户名和密码,然后判断是否与预设的用户名和密码匹配。如果匹配成功,就将用户重定向到名为"welcome.jsp"的欢迎页面;否则,将用户重定向到名为"error.jsp"的错误页面。
4. 创建LoginFilter程序
在"src"文件夹下新建一个名为"LoginFilter.java"的Java类,用来过滤未登录用户的请求。下面是这个类的代码:
```java
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebFilter("/*")
public class LoginFilter implements Filter {
public void init(FilterConfig fConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
String loginURI = req.getContextPath() + "/login";
boolean loggedIn = session != null && session.getAttribute("username") != null;
boolean loginRequest = req.getRequestURI().equals(loginURI);
if (loggedIn || loginRequest) {
chain.doFilter(request, response);
} else {
res.sendRedirect(loginURI);
}
}
public void destroy() {
}
}
```
在这个Filter程序中,我们首先获取请求中的Session对象,判断用户是否已经登录。如果用户已经登录或者请求是登录请求,就允许请求通过;否则,将用户重定向到登录界面。
5. 创建欢迎页面和错误页面
在WebContent文件夹下新建一个名为"welcome.jsp"的JSP文件,用来显示用户登录成功后的欢迎页面。下面是这个页面的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welcome Page</title>
</head>
<body>
<h1>Welcome, <%= session.getAttribute("username") %>!</h1>
<p>You have successfully logged in.</p>
</body>
</html>
```
在这个页面中,我们使用JSP的EL表达式来显示用户的用户名,同时显示一条登录成功的消息。
在WebContent文件夹下新建一个名为"error.jsp"的JSP文件,用来显示用户登录失败后的错误页面。下面是这个页面的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Error Page</title>
</head>
<body>
<h1>Login Error</h1>
<p>The username or password you entered is incorrect.</p>
</body>
</html>
```
在这个页面中,我们显示一条登录失败的消息,提示用户输入的用户名或密码不正确。
好了,这就是一个简单的Web登录系统的全部代码和步骤。
阅读全文