我想知道使用带有Tomcat 7的servlet 3.0的目录结构。 我使用了没有初始化参数的注释@WebServlet。
我想知道web.xml文件中要写的是什么? 是否还有待写...... ??
该文件存储在tomcat的classes文件夹中。
答案 0 :(得分:24)
这就是web.xml
中所需的全部内容:
<web-app 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_3_0.xsd"
version="3.0">
3.0兼容的servlet容器(如Tomcat 7)将自动找到@WebServlet
。
答案 1 :(得分:2)
我从Tomasz Nurkiewicz那里读到了答案,到目前为止已有22人受到赞成。请注意,他回答 4年前。
我想知道为什么我需要一个几乎空的xml文件?
我尝试使用Servlet 3的hello世界。
package com.servlet3;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/helloServlet3")
public class HelloServlet3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<html><body>");
out.print("<h3>Hello Servlet</h3>");
out.print("</body></html>");
}
}
我能够成功运行这个小小的网络应用程序。
重要提示:
请注意,此示例中不存在web.xml 。
所以,我们不需要这种几乎空的 web.xml。
但是,如果您需要基于表单的身份验证(但没有Spring 安全性),web.xml是必需。因为,没有等效注释可用于 <login-config
&gt;。
根据SO
中的这篇文章<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/login?event=Retry</form-error-page>
</form-login-config>
</login-config>
... 配置基于表单的身份验证的唯一方法是使用部署描述符(web.xml或web-fragment.xml)。
根据JSR-315 Servlet 3.0规范:: Ch13.6.3(第132页):
“Web应用程序部署描述符包含a的条目 登录表单和错误页面......“
规范仅是指表单登录配置的Web部署描述符,不是基于任何注释的配置。
<强>更新强>
上述警告输出信息与Java EE6 有关。
在Java EE7 中,我们可以进行基于表单的身份验证编程方式 ..
来自Java EE7 official tutorial,
48.3.1以编程方式验证用户
HttpServletRequest接口的以下方法使您能够 以编程方式验证Web应用程序的用户。
身份验证允许应用程序启动身份验证 在不受约束的请求中通过容器请求调用者 上下文。将显示一个登录对话框并收集用户名和 用于身份验证的密码。
登录允许应用程序收集用户名和密码 信息作为指定基于表单的身份验证的替代 在应用程序部署描述符。
注销允许应用程序重置a的来电者身份 请求。