【问题标题】:How to map a servlet call from a JSP page using form action?如何使用表单操作从 JSP 页面映射 servlet 调用?
【发布时间】:2014-07-08 06:03:49
【问题描述】:

我有一个名为 Welcome_2.html 的 JSP 页面,我在其表单操作中调用了一个像这样的 servlet:

<form action="/servlets/MyFirstServlet" method="post" id="form_id">

servlet“MyFirstServlet”在下 网络信息 班级 小服务程序 MyFirstServlet

并且jsp在文件夹下 HTML 与WEB-INF处于同一级别

即在实践中我有3个文件夹 HTML 元信息 WEB-INF

在 web.xml 我有以下 sn-p

    <servlet>
    <servlet-name>MyFirstServlet</servlet-name>
    <servlet-class>servlets.MyFirstServlet</servlet-class>
</servlet>  
<servlet-mapping>
    <servlet-name>MyFirstServlet</servlet-name>
    <url-pattern>/servlets/MyFirstServlet</url-pattern>
</servlet-mapping>

为什么没有调用 servlet?我在浏览器上单击 HTML 页面并尝试调用 servlet ...我只是一个初学者 请原谅我的智力低下。

【问题讨论】:

  • 您实际看到了什么行为?你收到400了吗?什么网址?
  • 对于“file:///C:/servlets/MyFirstServlet” URL 我正在获取网页未找到。
  • 这不正常。您如何访问您网站的首页? JSP 渲染的那个。
  • 你应该在浏览器上使用这个Welcome_2.html页面运行,因为你从这里调用servlet
  • @user3655102 我 100% 确定您正在通过服务器提交表单。您正在浏览器中打开 html 页面并点击提交,这就是出现 file:/// 的原因。

标签: java jsp servlets


【解决方案1】:

将您的 jsp 表单更改为 ,

<form action="/servlets/MyFirstServlet" method="post" id="form_id">

匹配web.xml 中的url 模式

<servlet-mapping>
    <servlet-name>MyFirstServlet</servlet-name>
    <url-pattern>/servlets/MyFirstServlet</url-pattern>
</servlet-mapping>

&lt;url-pattern&gt;/servlets/MyFirstServlet&lt;/url-pattern&gt; 这一行表示 url 匹配模式将调用 MyFirstServlet

在配置web.xml 元素之前阅读Oracle Tutorial

希望对你有帮助!!

【讨论】:

  • 我进行了相应的更改(也编辑了我的帖子,请参阅)。但仍然显示网页未找到....并且 URL 正在加载为 file:///C:/servlets/MyFirstServlet ....网页未找到。
  • 你能把你的项目结构贴出来,而不是用文字解释吗?
  • @user3655102 我只是在大声思考......如果你能说出你正在访问的第一个 URL,那可能会有所帮助。我认为您只是通过单击 HTML 文件而不是 http://{serverURL}:{port}/{appliucation}/{myhtml.html} 打开 HTML
【解决方案2】:

如果您使用 tomcat 7 ,则无需关心。例如:

在你的 servlet 中:

@WebServlet("/myFirstServlet")  

public class LoginPage extends HttpServlet {

   // your code 

}

在你的 html 中:

<!-- here you write myFirstServlet in the action tag -->
<form id="somethingGoesHere" action="myFirstServlet" method="post" >

【讨论】:

  • 你确定tomcat 支持注解,尽管是servlet 版本
  • @sankrish:是的,Tomcat 7 支持注解。阅读这里http://stackoverflow.com/questions/6535676/webservlet-annotation-with-tomcat7
【解决方案3】:

因为您的表单操作是 "/servlets/First" 所以你的 url 模式应该是

<url-pattern>/servlets/First</url-pattern>

【讨论】:

  • 这也可以,但是更改表单操作而不是映射更有意义,因为在实际项目中更改 servlet 映射可能会影响更多组件
【解决方案4】:

除非您的应用部署为 ROOT.war,否则您的所有 URL 都将相对于 http://myserver/webapp。所以我的猜测是你应该使用相对 URL。由于您的 JSP 是 HTML 格式,您需要编写:

<form action="../servlets/MyFirstServlet" method="post" id="form_id">

【讨论】:

    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多