<body> <c:if test="${!(empty param.username)&&!(empty param.password) } "> <% String username=request.getParameter("username"); String password=request.getParameter("password"); if(username.equals("wulian2020")&&password.equals("123")){ Cookie cookie_username=new Cookie("username",username); Cookie cookie_password=new Cookie("password",password); cookie_username.setMaxAge(60); cookie_password.setMaxAge(60); response.addCookie(cookie_username); response.addCookie(cookie_password); response.sendRedirect("index.jsp"); } else { response.setContentType("text/html;charset=utf-8"); out.write("账号或密码错误!"); } %> </c:if> <form action="login.jsp" method="post"> 账号:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> <input type="submit" value="登录" /> </form> </body>
时间: 2024-04-27 21:20:59 浏览: 185
这是一个简单的 JSP 页面,包括一个表单和一个条件语句。当用户提交表单时,会判断用户名和密码是否正确,如果正确则创建两个 Cookie 并重定向到 index.jsp 页面,如果不正确则输出错误信息。需要注意的是,这段代码存在一定的安全隐患,比如没有对参数进行输入合法性检查,可能会导致 SQL 注入等攻击。建议在实际应用中对代码进行进一步的优化和加固。
相关问题
创建一个含有用户名login和密码password的表单,将表单提交到print.jsp页面,由print.jsp页面输出表单中填写的用户名和密码。
创建一个简单的HTML表单,然后设置其action属性指向print.jsp页面,可以在后端接收表单数据。以下是步骤描述:
**HTML (index.html):**
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>登录表单示例</title>
</head>
<body>
<form id="loginForm" action="print.jsp" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
在这个例子中,`name`属性用于表单字段的值在网络传输过程中关联到`request.getParameter()`。
**Java Servlet / JSP (print.jsp):**
如果是在Spring MVC环境中,可能会用到控制器。如果是纯JSP,那么你可以直接处理表单数据。例如:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>打印表单内容</title>
</head>
<body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${not empty param.username and not empty param.password}">
<h2>用户名: ${param.username}, 密码: [hidden]</h2>
<!-- 可能需要对密码进行安全处理,比如显示星号代替实际字符 -->
</c:if>
<p><a href="/">返回首页</a></p>
</body>
</html>
```
注意,在生产环境,不应该在JSP页面上显示明文密码。
利用EL和JSTL技术,改进用户登录页面(login.jsp),当用户信息验证成功则转到主页面(main,jsp)显示问候语,如“用户liming,你好!”,否则转回login.jsp,保留原来用户输入的用户名,并有提示信息:
好的,让我来回答你的问题。
首先,我们需要在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技术,改进用户登录页面的示例代码。希望对你有所帮助!
阅读全文