Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将值从servlet传递到html页面_Java_Jsp_Servlets - Fatal编程技术网

Java 如何将值从servlet传递到html页面

Java 如何将值从servlet传递到html页面,java,jsp,servlets,Java,Jsp,Servlets,我正在使用servlet(v3.0)和jetty v9开发一个web服务器。我必须为HTML页面提供服务,但在此之前,我需要根据布尔变量的值修改页面上几个元素的CSS内联样式 多年来,我一直在看JSP教程和示例,但我觉得自己还没有找到答案。为了简化它,我正试图这样做: page.jsp:(in/WAR/html) 我已经使用Java多年了,但以前从未使用过JSP。我本以为这是JSP101,但我不明白它是如何工作的。另外,我的实际用例与上面的例子并不太遥远。JSP是否在这方面做得过火了?如果是的话

我正在使用servlet(v3.0)和jetty v9开发一个web服务器。我必须为HTML页面提供服务,但在此之前,我需要根据布尔变量的值修改页面上几个元素的CSS内联样式

多年来,我一直在看JSP教程和示例,但我觉得自己还没有找到答案。为了简化它,我正试图这样做:

page.jsp:(in/WAR/html)


我已经使用Java多年了,但以前从未使用过JSP。我本以为这是JSP101,但我不明白它是如何工作的。另外,我的实际用例与上面的例子并不太遥远。JSP是否在这方面做得过火了?如果是的话,还有更好的选择吗?

没有JSP,您只需从servlet编写html,如下所示:

 response.setContentType("text/html");  
 PrintWriter out = response.getWriter();  
 out.println("<html>");
 out.println("<body>");
 if(yourcondition){
   <p style="display:none;"></p>
 }else{
   <p></p>
 }
 out.println("</body>");
 out.println("</html>");
JSP

<p <c:if test="${your condition}">style="display: none;"</c:if>></p>
Servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setAttribute("attrib", true);
    request.getRequestDispatcher("/page.jsp").include(request, response);
}
Jsp


可能重复感谢您的详细回复。但是,我确实希望使用JSP(或任何其他模板引擎)。我理解JSP中的实际替换语法是什么,但我不了解服务器部分。我不想从servlet编写HTML,因为HTML太多了。我遇到的问题是如何从servlet加载JSP页面,将变量传递到某个JSP解析对象(可能是这样),然后返回最终转换的HTML页面。我正在研究Mike Kobityes发布的dup问题的解决方案,这篇文章有足够的信息让你开始。简要介绍如何将请求从servlet转发到jsp:首先设置要传递到请求对象的对象,然后使用getRequestDispatcher(url)定义目标jsp/servlet(也可以转发到其他servlet),最后转发请求。容器将负责解析等。此外,我用servlet代码更新了我的答案。有时我发现代码比解释更容易理解……)框架如何知道应该使用jsp引擎来处理页面?这仅仅是因为jsp文件扩展名吗?jsp实际上是一个servlet。在应用程序启动期间或容器按需编译的特殊类型的servlet。本质上,这些jsp servlet为您执行println()。而不是你写下来。在这里看一下第291页:如果您好奇的话,我建议您在业余时间阅读“headfirstservlet和JSP”中的第7章……)
public void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("yourvalue");
 }

<script>
 $(document).ready(function(){
    //sends ajax get request
    $.get( "myServlet", function( data ) {
        //Do your logic with the response
        if(data == "myvalue"){
            $("p").css("display", "none");
         }
    });
 });
</script>
public void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws IOException {
    request.setAttribute("myvalue",val);
    RequestDispatcher rd = sc.getRequestDispatcher("mypage.jsp");
    rd.forward(req, res);
 }
<p <c:if test="${your condition}">style="display: none;"</c:if>></p>
<p style="display: ${ var == 'myvalue' ? 'none': 'block'};"></p>
 var myVal= '${val}'

 if(myVal == "none"){
    $("p").css("display", "none");
 }
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setAttribute("attrib", true);
    request.getRequestDispatcher("/page.jsp").include(request, response);
}
${ attrib ? 'none': 'block'}