2016-04-04 92 views
-3

我alreayd看到这个很多问题,但它提出的解决方案并没有为我工作:的java将数据传递给jsp中

在我的servlet我这样做:

protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
     request.setAttribute("title", "Level0and1ForUser"); 

     request.getRequestDispatcher("./testPages/resultSetFormatter.jsp") 
       .forward(request, response); 
    } 
} 

而在jsp页面:

<title> 
<%= request.getParameter("title") %> 
</title> 

结果为空当你看到:

enter image description here

+0

从我的角度来看没有downvote候选人 –

+0

你正在写的值转换成*属性*,那么你想读一个*参数* 。这不是一回事。 – f1sh

回答

2

您可以使用:

${requestScope.title} 

注:

切勿使用JSP页面中的Java代码,其弃用,强烈建议不要

的小脚本的使用总是不鼓励。相反,应该使用标签库,如JSTL或表达式语言(EL)。

这个问题总是会出现,为什么我们不应该在JSP中使用scriptlet时,也可以使用scriptlet执行相同的任务。

这就是为什么要避免在JSP中使用scriplets:

  • JSP小脚本降低了代码的可维护性和可读性,从而使其难以阅读和做进一步的修改。
  • JSP Scriptlets不能被重新使用。
  • JSP Scriptlets不是单元可测试的。
  • JSP Scriplets将演示文稿与极易出错的业务逻辑合并在一起。
  • 最后但并非最不重要的一点,如果JSP Scriptlets引发异常,它将打破整个页面,并且不会在处理中进一步移动。
+0

和什么是可能的(更好)替代我的代码请吗? –

+0

我的答案的第二行...只需将它放在''标签 – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">之间,标题就变成了'{$ requestScope。标题}'不是标题的实际值,这是代码'<title> {$ requestScope.title} ' –

1

如果你把requestattribute的价值,你必须得到它以同样的方式:

<title> 
<%= (String)request.getAttribute("title") %> 
</title> 

但更美丽的是Jordi的答案。