如何通过JSP页面调用servlet

ukqbszuj  于 2024-01-04  发布在  其他
关注(0)|答案(6)|浏览(326)

我想通过JSP页面调用一个Servlet。调用的方法是什么?

mwecs4sa

mwecs4sa1#

首先将JSP页面放在/WEB-INF文件夹中的任何地方,这样就不可能在没有首先调用Servlet的情况下意外地单独打开JSP页面。例如/WEB-INF/result.jsp
然后创建一个Servlet,它在doGet()方法中执行如下操作。

  1. request.setAttribute("result", "This is the result of the servlet call");
  2. request.getRequestDispatcher("/WEB-INF/result.jsp").forward(request, response);

字符串
然后把这一行放到/WEB-INF/result.jsp中。

  1. <p>The result is ${result}</p>


现在通过URL调用Servlet,该URL与@WebServlet注解或web.xml中的<url-pattern>配置中定义的URL模式相匹配,例如/servletURLhttp://example.com/contextname/servletURL
如果您的实际问题是“如何将表单提交给servlet?”,那么您只需在HTML表单action中指定servlet URL。

  1. <form action="servletURL" method="post">


然后将调用其doPost()方法。

参见:

展开查看全部
gwbalxhn

gwbalxhn2#

你可以像在Servlet中一样使用RequestDispatcher

  1. <%@ page contentType="text/html"%>
  2. <%@ page import = "javax.servlet.RequestDispatcher" %>
  3. <%
  4. RequestDispatcher rd = request.getRequestDispatcher("/yourServletUrl");
  5. request.setAttribute("msg","HI Welcome");
  6. rd.forward(request, response);
  7. %>

字符串
请始终注意,在使用forward之前不要提交任何响应,因为这将导致IllegalStateException

x8goxv8g

x8goxv8g3#

没有调用Servlet的方法,应该在web.xml中进行Map,然后触发此Map。
示例:web.xml:

  1. <servlet>
  2. <servlet-name>hello</servlet-name>
  3. <servlet-class>test.HelloServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>hello</servlet-name>
  7. <url-pattern>/hello</url-pattern>
  8. </servlet-mapping>

字符串
这个Map意味着每次调用http://yoursite/yourwebapp/hello都会触发这个servlet。

  1. <jsp:forward page="/hello"/>

展开查看全部
mfpqipee

mfpqipee4#

为什么要这样做呢?您不应该在视图中执行控制器代码,当然也不应该试图将另一个servlet中的代码拉入视图。
首先对应用程序进行所有的处理和重构,然后将结果传递给视图。尽可能地使视图愚蠢,这样你就不会遇到这些问题。
如果这种设计对你来说很难,试试Freemarker或者类似Velocity的东西(尽管我不推荐)来强迫你这样做。
更准确地说,您试图解决的问题只是一个更大问题的症状-您的servlet架构/设计。

tzdcorbm

tzdcorbm5#

你可以将你的jsp页面提交给servlet,为此使用<form>标签。
重定向用途:

  1. response.sendRedirect("servleturl")

字符串

vmjh9lq9

vmjh9lq96#

您可以将HTML表单发布到URL,URLMap到servlet,或者将数据插入到传递给jsp页面的HttpServletRequest对象中。

相关问题