我有一个javascript函数,它使用Servlet doGet方法打开一个页面。 就像IN Js:
var a = "xxx?key=value";
window.open(a);
这里xxx被映射到AAA Servlet,它扩展了Http Servlet,在那个Servlet中,逻辑是用doGet方法编写的。
但主要问题是,因为它是一个get方法,所以在URL中可以看到整个参数列表(我使用Java脚本发送的键和值对)。如何将其更改为doPost以隐藏URL中的数据,以使其安全且无法在URL中查看数据。
也欢迎任何其他选择。
谢谢!
答案 0 :(得分:0)
当您打开新标签页或窗口时,您需要设置URL(使用get参数)。 现在你有一个选项(使用ajax):
<a target="_blank" href="url">
打开新页面。拥有这样的servlet:
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parameter1 = request.getParameter("param1");
String parameter2 = request.getParameter("param2");
//Process request, build response
//You can return your prefered data type (html, xml...)
String jsonResponse = new Gson().toJson(new MyResponseObject(parameter1, parameter2));
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(jsonResponse);
}
}
和“新视图”(包括JQuery lib):
<html>
<head>
...
<script>
$(document).ready(function (){
$.ajax({
url: '/SampleServlet',
type: "post",
data: {
param1: "param1Value",
param2: "param2Value",
},
dataType: 'json', //or html, xml...
success: function(data) {
//populate page body with servlet response (json, html, etc)
}
});
});
</script>
</head>
<body>
<!-- page content here -->
</body>
</html>
答案 1 :(得分:0)
使用某种事件(点击,功能等)包装以下javascript:
await
在servlet中你只需得到正常的值,
@action
public async getTags() {
const tags = await Api.getTags();
this.tags.replace(tags);
}