WEB-INF目录下登录表单提交的重定向

问题描述

登陆表单提交跳转后刷新会重新提交表单,但是使用重定向时不走视图解析器,不能访问WEB-INF下的资源

解决方法

  • 原方法

      @RequestMapping(value = "/login", method = RequestMethod.POST)
      public String login(){
          return ("admin/home");//请求转发到登陆后的主页
      }
  • 改进方法

      @RequestMapping(value = "/login", method = RequestMethod.POST)
      public String login(){
          return ("redirect:/system/home");//重定向home方法,由home方法转发到主页
      }
    
      //中间方法
      @RequestMapping("/home")
      public String home(){
          return ("admin/home");//请求转发到登陆后的主页
      }

转载于:https://www.cnblogs.com/yxmhl/p/11601219.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要编写login.jsp页面,其中包含一个表单,用户输入用户名和密码,并将其提交给FirstServlet: ```html <!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> <h1>Login</h1> <form action="/servlet/firstServlet.do" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> </body> </html> ``` 然后,编写FirstServlet,获取用户名和密码,并进行判断: ```java import java.io.BufferedReader; import java.io.FileReader; 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("/servlet/firstServlet.do") public class FirstServlet 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"); // 从userinfo.txt文件中读取用户名和密码 BufferedReader reader = new BufferedReader(new FileReader(getServletContext().getRealPath("/WEB-INF/userinfo.txt"))); String line = null; boolean success = false; while ((line = reader.readLine()) != null) { String[] parts = line.split(","); if (username.equals(parts[0]) && password.equals(parts[1])) { success = true; break; } } reader.close(); if (success) { // 登录成功,跳转到SecondServlet request.setAttribute("username", username); request.getRequestDispatcher("/servlet/secondServlet.do").forward(request, response); } else { // 登录失败,跳转到failed.jsp response.sendRedirect(request.getContextPath() + "/hw/failed.jsp"); } } } ``` 如果登录成功,将用户名存储在request中,并将请求转发到SecondServlet;如果登录失败,则重定向到failed.jsp页面。 接下来,编写SecondServlet,显示用户名信息: ```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("/servlet/secondServlet.do") public class SecondServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = (String) request.getAttribute("username"); response.setContentType("text/html"); response.getWriter().println("<html><head><title>Welcome</title></head><body>"); response.getWriter().println("<h1>Welcome, " + username + "!</h1>"); response.getWriter().println("</body></html>"); } } ``` 最后,编写错误处理页面404.html和500.html,并在web.xml中配置错误页面: ```xml <web-app> <error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/500.html</location> </error-page> </web-app> ``` 这样,当出现404或500错误时,就会自动跳转到相应的错误页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值