为了账号安全,请及时绑定邮箱和手机立即绑定

POST 响应 HTML 页面显示在调试器中,但未显示在使用 JAVAEE 的浏览器中

POST 响应 HTML 页面显示在调试器中,但未显示在使用 JAVAEE 的浏览器中

斯蒂芬大帝 2022-01-06 19:50:09
所以这里的问题是我有一个连接表单向 servlet 发送 Post 请求。这个 servlet 在做一些测试(密码,用户的电子邮件验证)后将请求转发到不同的页面。唯一的问题是我在查看我的POST请求时得到了正确的页面作为响应,但该页面没有显示在我的 Web 浏览器中。怎么来的?这是我的代码。登录 servletpackage AHSServlets;import java.io.IOException;import objMetier.signInForm;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import AHSbeans.User;@WebServlet(    name = "signInServ",    urlPatterns = {"/"})public class signInServ extends HttpServlet{    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {        this.getServletContext().getRequestDispatcher("/signIn.jsp").forward(request, response);;    }    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {        signInForm connect = new signInForm();        User user = connect.validateSignIn(request);        HttpSession session = request.getSession();        if (user != null) {            request.setAttribute("connect", connect);            session.setAttribute("sessionUser", user);            this.getServletContext().getRequestDispatcher("/restrict_client/client.jsp").forward(request, response);        }        else        {         request.setAttribute("connect", connect);         this.getServletContext().getRequestDispatcher("/signIn.jsp").forward(request, response);        }    }}正如您在signIn.jsp我${connect.error}应该向我展示错误消息中看到的那样。我再说一遍,但我可以看到使用调试器显示的这条消息,但在我的网络浏览器上看不到。所以发生的事情是在POST它停留在网页路径上并且我只在响应中得到 HTML 之后。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

好的,所以我不熟悉 angular,但只是查看ajax的w3,您需要处理这样的响应:


将 id 添加到您的 span 元素(${connect.error}从中删除):


 <span id="somediv"></span>

添加然后成功:


   <script type="text/javascript">

        var app = angular.module("AHS", []);

        app.controller("myCtrl", function ($scope, $http, $httpParamSerializerJQLike){

            $scope.userObj = {

                    mail: "",

                    password: "",

            }

            $scope.submitForm = function() {

                  $http({

                     method : 'POST',

                     url : '/', // use relative

                     data: $httpParamSerializerJQLike($scope.userObj),

                     headers: {

                       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8;'

                     }

                  }).then(function mySuccess(response) {

                      //handle response here

                      console.log(response.data);

                      document.getElementById("somediv").innerHTML = response.data;

                  });

                };

        });

    </script>

然后对于您的 servlet:


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    signInForm connect = new signInForm();

    User user = connect.validateSignIn(request);

    HttpSession session = request.getSession();


    if (user != null) {

       // request.setAttribute("connect", connect); //what the hell is connect supposed to be here? 

        session.setAttribute("sessionUser", user);

       // this.getServletContext().getRequestDispatcher("/restrict_client/client.jsp").forward(request, response); //you do not do this in ajax requests.

    }else{

    //request.setAttribute("connect", connect);

     //this.getServletContext().getRequestDispatcher("/signIn.jsp").forward(request, response);

    }

    response.setContentType("text/plain");  // Set content type 

    response.setCharacterEncoding("UTF-8"); 

    response.getWriter().write("hello world");       // Write response body.


}


查看完整回答
反对 回复 2022-01-06
  • 1 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信