HTTP状态404 - 请求的资源不可用

时间:2014-05-11 19:33:24

标签: java jsp servlets ejb

我正在研究一个小型EJB应用程序。我有一个JSP页面,其中有一个表单,用户填写其详细信息,点击按钮时,它将被发送到servlet页面,在该页面中,数据将通过我的实体类添加。但是当我点击JSP页面上的按钮时,我收到以下错误

HTTP状态404 -

输入状态报告

消息

description请求的资源()不可用。

GlassFish Server开源版3.1.2.2

我的servlet页面Contactservlet.java是

 public class Contactservlet extends HttpServlet {
@EJB
private AbstractFacade cfl;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try 
    {
        String name=request.getParameter("name");
        String mail=request.getParameter("mail");
        String phn=request.getParameter("phn");
        String cmnt=request.getParameter("cmnt");
        Contact c=new Contact();
        c.setCmnt(cmnt);
        c.setMail(mail);
        c.setName(name);
        c.setPhn(phn);
        cfl.create(c);

    }
    catch(Exception ex)
    {
        out.println(ex);
    }
}

我的web.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
    <servlet-name>Contactserv</servlet-name>
    <servlet-class>Contactservlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Contactserv</servlet-name>
    <url-pattern>/Contactserv</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

我的JSP文件的代码是

<form action="Contactservlet">
        Name <input type="text" name="name"/>
        Mail <input type="text" name="mail"/>
        Phone <input type="text" name="phn"/>
        Comment <input type="text" name="cmnt"/>
        <input type="submit" name="bt" value="Submit"/>
</form>

1 个答案:

答案 0 :(得分:1)

您的问题与表单action属性的错误设置有关。您需要动态设置它,并在Web应用程序的上下文根中进行分解:

action="${request.contextPath}/Contactserv"

(顺便说一下:你当前的JSP中有“/ Contactservlet”。动作必须指定你想要引用的servlet的servlet-mapping

更好的方法是使用JSTL:

action="<c:url value="/Contactserv"/>"