利用EL和JSTL技术,改进用户登录页面(login.jsp),当用户信息验证成功则转到主页面(main,jsp)显示问候语,如“用户liming,你好!”,否则转回login.jsp,保留原来用户输入的用户名,并有提示信息:
时间: 2024-01-29 19:04:21 浏览: 119
login.jsp用户登录界面
4星 · 用户满意度95%
好的,让我来回答你的问题。
首先,我们需要在login.jsp页面中添加一个表单,让用户输入用户名和密码。然后,我们可以使用EL表达式和JSTL标签来验证用户输入的信息。
下面是一个简单的示例代码:
```jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h2>User Login</h2>
<c:if test="${not empty param.error}">
<p style="color:red">${param.error}</p>
</c:if>
<form action="login" method="post">
<p>
<label>Username:</label>
<input type="text" name="username" value="${not empty param.username ? param.username : ''}" />
</p>
<p>
<label>Password:</label>
<input type="password" name="password" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</form>
</body>
</html>
```
在这个页面中,我们使用了EL表达式`${not empty param.error}`来判断是否有错误信息需要显示。如果有,就使用JSTL的`<c:if>`标签来显示错误信息,`${param.error}`表示从请求参数中获取错误信息。
接下来,我们可以在登录页面的表单中添加一个隐藏字段,用于告诉服务器这是一个登录请求。然后,在服务器端的登录处理器中,我们可以获取请求参数中的用户名和密码,并进行验证。
如果验证成功,我们可以将用户名存储在会话中,并重定向到主页面。在主页面中,我们可以使用EL表达式`${sessionScope.username}`来获取存储在会话中的用户名,并显示问候语。
下面是一个简单的示例代码:
```java
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String USERNAME = "admin";
private static final String PASSWORD = "password";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (USERNAME.equals(username) && PASSWORD.equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("main.jsp");
} else {
request.setAttribute("username", username);
request.setAttribute("error", "Invalid username or password");
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
}
}
```
在这个处理器中,我们使用了硬编码的用户名和密码进行验证。如果验证成功,我们将用户名存储在会话中,并使用`response.sendRedirect()`方法重定向到主页面。
如果验证失败,我们将用户名存储在请求属性中,并添加一个错误信息。然后,我们使用`RequestDispatcher.forward()`方法将请求转发到登录页面,并保留原来用户输入的用户名。
在主页面中,我们可以使用EL表达式`${sessionScope.username}`来获取存储在会话中的用户名,并显示问候语。下面是一个简单的示例代码:
```jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Main Page</title>
</head>
<body>
<h2>Welcome, ${sessionScope.username}!</h2>
</body>
</html>
```
以上就是利用EL和JSTL技术,改进用户登录页面的示例代码。希望对你有所帮助!
阅读全文