如何创建一个servlet?
1.通过如下Java ==> JAVA EE方式
创建Servlet时,idea帮我们做了2件事:
①生成Servlet.java类
②在web.xml核心配置文件中进行servlet注册
至此,这种方法,Servlet已经创建成功了
②在Maven中创建servlet
创建maven项目后:先添加java
和resources
这两个包,同时,将它们设为有特定功能的包。
刚开始在java==>new 时,是没有创建servlet选项的。
解决方法=>添加2个依赖:
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
这时,有了创建servlet选项:
注意:
更好的一个方法是:找到webapps--》ROOT--》WEB-INF--》web.xml,直接粘贴复制到项目的web.xml中,目前最新版为4.0。
3.在web.xml中注册servlet,并添加对应的映射。
示例:
参考官方提供的webapps下的examples: http://localhost:8080/examples/ 我认为这是入门最好的教程
HelloServlet.java
@WebServlet(name = "HelloServlet")
public class HelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//响应的类型:xml
response.setContentType("text/html");
//获取响应的输出流:getWriter()输出字符、getOutputStream()输出字节
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet测试</h1>");
out.println("</body>");
out.println("</html>");
}
}
在web.xml
4.运行Tomcat:查看结果
主页:
测试hello.html:
测试MyServlet.java
乱码问题的解决:
【分析】请求头和响应头
已经设置了响应类型为html,还需设置字符编码,一般设为utf-8
【解决】
【查看效果】
注意:不能访问WEB-INF目录下的资源
从安全角度出发,TOMCAT不允许访问WEB-INF目录下的HTML,JSP文件。 所以如果你的资源文件放在WEB-INF下,会提示404错误