【发布时间】:2018-02-07 18:36:25
【问题描述】:
我正在尝试将属性从 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 文件更改如下:
(我从here获取了两个代码sn-ps)
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>
我哪里做错了?
【问题讨论】: