当前位置: 首页 > 知识库问答 >
问题:

无法检索servlet中的值集

舒嘉德
2023-03-14

我认为这是一个极其简单的问题,但我所有解决它的尝试都失败了。

简而言之:我有一个JSP文件,其中的表单调用Java Servlet。servlet处理输入并返回一个变量(属性),然后重定向回同一个jsp。我想让jsp使用JavaScript而不是scriptlet来处理返回的属性。

JSP代码(test.jsp):

<html>
  ...
  <%@page language="java"
    import="java.sql.*" 
    import="java.util.*"
  %>
  ...
  <body>
    <script type='text/javascript'>
      var name = session.getAttribute("test");
      alert(name);
    </script>
    ...
  </body>
</html>

以及Servlet代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
  request.getSession().setAttribute("test", "value");
  String redirectedPage = "/test.jsp";
  RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher(redirectedPage);
  reqDispatcher.forward(request,response);
}

我认为问题源于我对会话变量的声明:

var name = session.getAttribute("test");

我也尝试过:

var name = (String) session.getAttribute("bob");

以及:

String name = (String) session.getAttribute("bob");

我可以使用scriptlet从表单中访问此属性(

任何帮助都是非常感谢的。如果你觉得这个问题已经被问到/解决了(我已经搜索过了),请礼貌地告诉我。

共有1个答案

彭浩穰
2023-03-14

您不能从javascript访问会话,但您当然可以在服务器端创建javascript。

<script type='text/javascript'>
  var name = '<%= session.getAttribute("test") %>';
  alert(name);
</script>

如果您不能100%控制实际值(即使如此),最好转义字符串。否则,有人可能会注入破坏您的页面的值(最佳情况)或启用某些XSS来窃取用户数据或劫持用户会话。

使用Apache公共资源StringEscape eUtils(JavaDoc)它看起来像这样

<script type='text/javascript'>
  var name = '<%= StringEscapeUtils.EscapeJavaScript((String)session.getAttribute("test")) %>';
  alert(name);
</script>

如果您要经常使用它(或者甚至只使用一次),我建议创建一个标签,该标签采用属性名称并输出javascript安全字符串。也许作为

 类似资料:
  • 我的表单中有一个select标记,它将被发送到Servlet。我将select标记的内容设为动态的(它从DB中的一个表列中获取值)。 ('r'is ResultSet)我的问题是如何将用户从选择标签中选择的值发送到servlet。为了使用Request.getparameter(“名称”),我必须知道选项标签的值。我很困惑。请帮助…谢谢。

  • 我正在尝试获取属性的值以使用引导程序进行删除确认。问题是我无法获取的值。 当我按下控制台按钮时,结果是 管理员视图:488 初始化原型: 对象(0) 数据表: ƒ (t) 添加: ƒ (e,t) 添加返回: ƒ (e) 添加类: ƒ (e) 词缀: ƒ (c) 之后: ƒ () ajax完成: ƒ (e) ajax错误: ƒ (e) ajax发送: ƒ (e) ajax开始: ƒ (e) ajax

  • 我想获取我在 Web 表单中使用的多个标签的值。我使用隐藏的输入字段来完成这项工作,但我无法通过servlet打印标签的值,因为我得到空作为标签的值 下面是我用来测试的示例代码 索引.jsp 这是提交。服务程序 } 我想显示孩子的年龄,但输出为空 请帮助提供可能的解决方案 提前致谢

  • 问题内容: 我有一些看起来像这样的代码: 目前,我正在执行以下操作以获取计数: 但是似乎必须要有一个更好的解决方案(类型安全…因为这就是使用jooq的全部目的)。有什么建议? 问题答案: 不幸的是,对于此特定查询,没有很多“更好”的方法来安全地键入值。您可以执行以下操作以添加类型安全性: 问题在于,有关投影的大多数类型信息在“到达”方法时已“丢失”给Java编译器。没有办法,一个方法可以从恢复它条

  • 问题内容: 我正在使用一个每个键有两个值的Multimap。下面是我用来分别获取每个值的代码: 代码的第一位获取第一个对象值: 然后,我正在使用另一种方法来检索其他值。此方法将第一个对象作为参数: 这似乎是一种“骇人的”做事方式,那么我有什么办法可以更轻松地获得价值? 问题答案:

  • 问题内容: MVC4 +实体框架4.4 + MySql + POCO /代码优先 我正在设置以上配置..这是我的课程: 这是我的web.config设置… 数据库AND表已经存在… 我对mvc还是很陌生,但是正在使用本教程 应用程序构建良好…但是,当我尝试使用Product(BTD.Data)作为我的模型类并使用BTDContext(BTD.DataContext)作为我的数据上下文类添加控制器时