使用scriptlet代码调用onClick函数

时间:2012-07-08 14:13:44

标签: jsp servlets

我想在点击它时添加一个按钮,应该显示日期,但按钮不起作用。

我的servlet:

package test.servlets; 

  import java.io.*;
  import javax.servlet.*;


      public class FunctionalTestServlet extends HttpServlet
        {

public void doGet(HttpServletRequest request,HttpServletResponse response)throws    

        ServletException, IOException {



     response.setContentType("text/html");
      PrintWriter out = response.getWriter();  
      String text = request.getParameter("montext");
      String fileName = request.getParameter("testclass");

      out.println("<b><font color='blue'>The text is :</font></b>" 
      + "<b>"+ text +"</b>" + "<br>");

      out.println("<b><font color='blue'>The File name is :</font></b>" 
              + "<b>"+ fileName+"</b>" + "<br>");


      out.println("<% public void executeTest() {" +

 " java.util.Date d = new java.util.Date();out.println(d.toString()); } %>");
 **out.println("<input type='submit' value='Execute Test'onclick='executeTest()'>");**

    }


}

jsp页面:

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   

"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
   </head>
      <body>

    <html:file properties="tonFichier" name="tonForm"/>

    <form action="FunctionalTestServlet" enctype="multipart/form-data" method="get">
    <p>
  Type some text (if you like):<br>
  <input type="text" name="montext" size="30">
   </p>
    <p>
    Please specify a Test , or a set of tests:<br>
   <input type="file" name="testclass" size="40" >
    </p>
   <div>
  <input type="submit" value="Execute Test">

     </div>
   </form>
   </body>
  </html>

请知道 干杯

1 个答案:

答案 0 :(得分:2)

这当然是错的:

out.println("<% public void executeTest() {" +

您无法在servlet中生成scriptlet代码。 Scriptlet代码属于JSP。从JSP返回的任何文本(发送到out)都直接发送到客户端。因此,传递给浏览器的HTML将包含scriptlet代码 - 应该在服务器端进行评估!

Scriptlet只能出现在JSP中。

为了让它更有趣,你试图将Java executeTest()方法作为JavaScript onclick处理程序附加 - 永远不会起作用:

out.println("<input type='submit' value='Execute Test'onclick='executeTest()'>")

事实上,你的代码被破坏的方式很多,需要完全重新思考/重写。从了解servlet,JSP和JavaScript的工作方式,时间和位置开始。

我有点理解并猜测是什么,它既不需要JSP也不需要servlet。只需在JavaScript中编写onlick处理程序,然后以某种方式修改DOM以打印当前日期。