ZBLOG

假设用户登录页面login.jsp在web工程web2024的hw目录下,即访问login.jsp的URL地址是http://localhost:8080/web2024/hw/login.jsp,将login.jsp提交的用户名和密码由FirstServlet(映射地址为/servlet/firstServlet.do)获取进行判断,如果登录成功,则跳转至SecondServlet(映射地址为/servlet/secondServlet.do)显示用户名信息,如果登录不成功,则跳转至登录...

根据你提供的需求,下面是一个实现示例,包括 login.jspFirstServletSecondServlet 的代码,以及如何处理错误页面。

1. 文件结构

  1. web2024/
  2. ├── hw/
  3. ├── login.jsp
  4. ├── failed.jsp
  5. ├── WEB-INF/
  6. ├── userinfo.txt
  7. └── web.xml
  8. ├── 404.html
  9. └── 500.html

2. userinfo.txt

WEB-INF/userinfo.txt 中存储用户信息,例如:

  1. username1:password1
  2. username2:password2

3. login.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Login</title>
  6. </head>
  7. <body>
  8. <h2>Login Page</h2>
  9. <form action="<%= request.getContextPath() %>/servlet/firstServlet.do" method="post">
  10. Username: <input type="text" name="username"/><br/>
  11. Password: <input type="password" name="password"/><br/>
  12. <input type="submit" value="Login"/>
  13. </form>
  14. </body>
  15. </html>

4. FirstServlet.java

  1. import javax.servlet.ServletException;
  2. import javax.servlet.annotation.WebServlet;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.BufferedReader;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9. @WebServlet("/servlet/firstServlet.do")
  10. public class FirstServlet extends HttpServlet {
  11. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  12. String username = request.getParameter("username");
  13. String password = request.getParameter("password");
  14. // 验证用户名和密码是否正确。
  15. boolean isValidUser = false;
  16. try (BufferedReader reader = new BufferedReader(new InputStreamReader(getServletContext().getResourceAsStream("/WEB-INF/userinfo.txt")))) {
  17. String line;
  18. while ((line = reader.readLine()) != null) {
  19. String[] parts = line.split(":");
  20. if (parts.length == 2 && parts[0].equals(username) && parts[1].equals(password)) {
  21. isValidUser = true;
  22. break;
  23. }
  24. }
  25. }
  26. if (isValidUser) {
  27. response.sendRedirect(request.getContextPath() + "/servlet/secondServlet.do?username=" + username);
  28. } else {
  29. response.sendRedirect(request.getContextPath() + "/hw/failed.jsp");
  30. }
  31. }
  32. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  33. // 通常不支持 GET 请求,但可以重定向到登录页。
  34. response.sendRedirect(request.getContextPath() + "/hw/login.jsp");
  35. }
  36. }

5. SecondServlet.java

  1. import javax.servlet.ServletException;
  2. import javax.servlet.annotation.WebServlet;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. @WebServlet("/servlet/secondServlet.do")
  7. public class SecondServlet extends HttpServlet {
  8. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  9. String username = request.getParameter("username");
  10. response.setContentType("text/html;charset=UTF-8");
  11. response.getWriter().println("<h1>Welcome, " + username + "!</h1>");
  12. }
  13. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14. // 不支持POST请求,这里可以重定向到其他地方或返回错误。
  15. doGet(request, response);
  16. }
  17. }

6. web.xml

  1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  4. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1">
  6. <!-- 定义Error Pages -->
  7. <error-page error-code="404">
  8. <location>/404.html</location>
  9. </error-page>
  10. <error-page error-code="500">
  11. <location>/500.html</location>
  12. </error-page>
  13. </web-app>

7. 错误页面 (404.html500.html)

404.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>404 Not Found</title>
  6. </head>
  7. <body>
  8. <h1>Error 404 - Page Not Found</h1>
  9. <p>The page you are looking for does not exist.</p>
  10. <a href="/web2024/hw/login.jsp">Go to Login Page</a>
  11. </body>
  12. </html>

500.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>500 Internal Server Error</title>
  6. </head>
  7. <body>
  8. <h1>Error 500 - Internal Server Error</h1>
  9. <p>An unexpected error occurred on the server.</p>
  10. // 可考虑输出异常信息,但需谨慎以免泄露敏感数据。
  11. <a href="/web2024/hw/login.jsp">Go to Login Page</a>
  12. <!-- 提示出错信息 -->
  13. <%
  14. String errorMessage = (String)request.getAttribute("javax.servlet.error.message");
  15. if(errorMessage != null){
  16. out.println("<p>Error details: " + errorMessage + "</p>");
  17. }
  18. %>
  19. <!-- 提示用户联系管理员等 -->
  20. <p>If the problem persists, please contact support.</p>
  21. </body></html>

以上代码实现了你所要求的功能,包括用户登录验证、成功与失败的跳转、错误处理等。确保在Tomcat服务器中正确部署该Web应用程序,并根据需要调整路径和内容。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20900

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?