有没有办法在java servlet中打开相对地址?

时间:2014-11-28 01:03:10

标签: jsp tomcat6 servlet-3.0

我正在研究一个JSP应用程序。我目前已经创建了一个按钮,使用以下命令在特定大小的新窗口中启动相对URL:onclick="window.open('./my_path','PREVIEW','width=600, height=300'); 在.jsp文件中。但是我需要在Servlet中运行一些java代码,我不想在JSP文件中放置任何逻辑。无论如何我可以这样做?

编辑:所以原因是因为我想首先使用javascript进行验证,目前这是在jsp中。验证后,我想在服务器上处理一些东西,然后我想根据服务器进程打开一个新窗口。

想 JSP中的<input type="submit" name="Function" onclick="javascriptFunction()" style="WIDTH: 130px" value="Edit">。然后在servlet doPost(...){ if(request.getParameter("Function"){//do something cool; //process open javascript window} }

原因是我需要维护订购。

1 个答案:

答案 0 :(得分:0)

首先,如果您包含JSP,servlet和web.xml的相关部分,那将非常有用。无论如何,我认为这可能接近你正在寻找的东西。

重要的概念是在服务器上处理JSP。实际上,JSP已预编译为servlet。因此,如果您的uri解析为myserv,然后将请求转发给myjsp,它会将请求转发给另一个servlet。方法.setAttribute和.getAttribute用于在请求的上下文中在服务器上的servlet之间进行通信。

假设您的web.xml大致如下:

  <servlet>
    <servlet-name>myserv</servlet-name>
    <servlet-class>com.mydom.myserv</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>myserv</servlet-name>
    <url-pattern>/myserv/*</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>myjsp</servlet-name>
    <jsp-file>/myjsp.jsp</jsp-file>
   </servlet>
  <servlet-mapping>
    <servlet-name>myjsp</servlet-name>
    <url-pattern>/myjsp.jsp</url-pattern>
  </servlet-mapping>

然后你有一个doPost的servlet大致如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("relpath", myRelPathObj.getRelPath());  
request.getRequestDispatcher("myjsp.jsp").forward(request, response);
return;
.
.
.

然后你有一个表达式标签的jsp大致如下:

onclick="window.open('./<%=request.getAttribute("relpath")%>','PREVIEW','width=600, height=300');