利用EL和JSTL技术,改进用户登录页面(login.jsp),当用户信息验证成功则转到主页面(main,jsp)显示问候语,如“用户liming,你好!”,否则转回login.jsp,保留原来用户输入的用户名,并有提示信息:“用户名或密码
时间: 2023-09-11 10:07:46 浏览: 142
错误,请重新输入。”
好的,这是一个Web开发的问题,我会尽力回答。首先,我们需要编写一个Servlet来处理登录请求、验证用户信息,并根据验证结果转发到不同的页面。这里假设我们已经有一个名为`LoginServlet`的Servlet来处理登录请求。
在`login.jsp`中,我们需要使用EL表达式和JSTL标签来实现页面的改进。具体地,我们需要:
1. 在页面顶部引入JSTL标签库:
```jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
```
2. 在页面中使用EL表达式获取用户输入的用户名和密码:
```jsp
<input type="text" name="username" value="${not empty param.username ? param.username : ''}" />
<input type="password" name="password" value="${not empty param.password ? param.password : ''}" />
```
这里使用了`${not empty param.username ? param.username : ''}`表达式,如果请求中包含了`username`参数,则使用该参数的值作为输入框的默认值,否则使用空字符串。
3. 在页面中使用JSTL标签判断是否需要显示错误提示信息:
```jsp
<c:if test="${not empty requestScope.error}">
<div class="error">${requestScope.error}</div>
</c:if>
```
这里使用了`requestScope.error`表达式,如果请求中包含了`error`属性,则显示错误提示信息。
4. 在页面中使用JSTL标签判断是否需要显示问候语:
```jsp
<c:if test="${not empty sessionScope.username}">
<div class="greeting">用户${sessionScope.username},你好!</div>
</c:if>
```
这里使用了`sessionScope.username`表达式,如果用户已经登录成功并且保存了用户名到`session`中,则显示问候语。
最后,在`LoginServlet`中,如果用户信息验证成功,则将用户名保存到`session`中,并转发到`main.jsp`页面;否则将错误信息保存到`request`中,并转发回`login.jsp`页面:
```java
if (userValidated) {
session.setAttribute("username", username);
request.getRequestDispatcher("/main.jsp").forward(request, response);
} else {
request.setAttribute("error", "用户名或密码错误,请重新输入。");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
```
希望这个回答能够帮助你。