我正在研究一个小型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>
答案 0 :(得分:1)
您的问题与表单action
属性的错误设置有关。您需要动态设置它,并在Web应用程序的上下文根中进行分解:
action="${request.contextPath}/Contactserv"
(顺便说一下:你当前的JSP中有“/ Contactservlet”。动作必须指定你想要引用的servlet的servlet-mapping
)
更好的方法是使用JSTL:
action="<c:url value="/Contactserv"/>"