繁体   English   中英

为什么我的Web应用程序无法正确重定向?

[英]Why my web application does not redirect correctly?

我试图将属性从Java servlet传递到jsp,然后将此属性写入jsp文件。 但是,它不会重定向到jsp文件url,但是会写入jsp文件的内容。 这是我的相关代码:

Control.java:

@WebServlet("/Control")
public class Control extends HttpServlet{

@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    Key key = MacProvider.generateKey();
    long time = System.currentTimeMillis();
    try{
        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, key)
                .setSubject("username")
                .setIssuedAt(new Date(time))
                .setExpiration(new Date(time+6000000))
                .claim("password","password")
                .compact();
        req.setAttribute("jwt", jwt);
        req.getRequestDispatcher("/Home.jsp").forward(req,resp);
    }catch (Exception e){
        e.printStackTrace();
    }

}
}

Home.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
${jwt}
</body>
</html>

在这里,浏览器停留在http://localhost:8080/Control但是它写入Home.jsp文件的内容,而该文件只是一个Java Web令牌结果字符串。

2)我的第二个问题是,当我尝试将此jwt结果字符串存储在浏览器本地存储中,然后将其写入jsp文件中以检查它是否存储在浏览器中时。 但它不会打印任何内容。 为此,我只更改了Home.jsp文件,如下所示:

(我从这里获取了两个代码段)

Home.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
<script>
    localStorage.setItem("jwt", ${jwt});
    console.log(localStorage.getItem("jwt"));
    var jjwt = localStorage.getItem("jwt");
    document.write(jjwt);
</script>
</body>
</html>

另一种尝试:

<html>
<head>
<script>
function myFunction() {
    localStorage.setItem("jwt", ${jwt});
    console.log(localStorage.getItem("jwt"));
    var jjwt = localStorage.getItem("jwt");
    document.getElementById("myText").innerHTML = jjwt;
}
</script>
</head>
<body onload="myFunction()">

<span id="myText"></span>

</body>
</html>

我在哪里做错了?

1)当您使用RequestDispatcher.forward(request,response)时,您的servlet仍将具有控制权,但将加载jsp页面,因此无需担心。 如果希望浏览器URL显示JSP页面URL,请执行response.sendRedirect("URL TO LOAD");

2)由于您使用的是JSP,请尝试访问以下请求变量并进行打印

<% String jwt = (String) request.getAttribute("jwt");%>

我们需要将其设置为

localStorage.setItem('jwt', <%=jwt%>);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM