I am trying to do registration example in magnolia. I have a registration form, on submission of form control should be transferred to my own written servlet.
snippet for form :
<body>
<form action="./register" method="post">
Name:<input type="text" name="name"><br />
Email Id:<input type="text" name="email"><br/>
<input type="submit" value="Register">
</form>
</body>
注册servlet类:
public class Registration extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("This is registration servlet");
}
}
我已经配置了模块描述符:
<servlets>
<servlet>
<name>RegistrationServlet</name>
<class>com.rbt.registration.Registration</class>
<comment>registration servlet</comment>
<mappings>
<mapping>/register</mapping>
</mappings>
</servlet>
</servlets>
我还配置了模板定义。 但是当我点击提交按钮时。它显示未找到资源的错误。 请帮帮我。
答案 0 :(得分:1)
在模板中,当为表单编写html时,您还可以使用action="${ctx.contextPath}/register"
将表单响应定向到servlet正在侦听的uri。
另请转到config:/server/filters/servlets/
并验证RegistrationServlet
是否正确添加到那里。
同样的问题(尽管对于不同的servlet)也在Magnolia Forum
HTH,Jan
答案 1 :(得分:0)
您在模块描述符中配置的映射将相对于您的上下文路径。例如。如果您的基本网址为http://example.com:8080/public
('public'作为您的上下文路径),那么您的servlet将响应http://example.com:8080/public/register
。
检查该网址是否与您的表单提交的网址相匹配。 action="./register"
是相对路径,取决于包含表单的网页路径。