创建一个servlet,解决maven依赖、路径问题、遇到的乱码问题

如何创建一个servlet?

1.通过如下Java ==> JAVA EE方式

image-20200414113455075

image-20200414114134390

image-20200414114634995

image-20200414114911461

创建Servlet时,idea帮我们做了2件事:

①生成Servlet.java类

image-20200414115342815

image-20200414120233534

②在web.xml核心配置文件中进行servlet注册

image-20200414115613969

至此,这种方法,Servlet已经创建成功了

②在Maven中创建servlet

创建maven项目后:先添加javaresources这两个包,同时,将它们设为有特定功能的包。

image-20200414120435918

image-20200414121056345

刚开始在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选项:

image-20200414123718865

注意:

image-20200414125353505

更好的一个方法是:找到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

image-20200414131946925

4.运行Tomcat:查看结果

主页:

image-20200414134357684

测试hello.html:

image-20200414134847112

测试MyServlet.java

image-20200414135526754

乱码问题的解决:

【分析】请求头和响应头

已经设置了响应类型为html,还需设置字符编码,一般设为utf-8

image-20200414141636212

image-20200414142040760

【解决】

image-20200414142230575

【查看效果】

image-20200414142744048

注意:不能访问WEB-INF目录下的资源

从安全角度出发,TOMCAT不允许访问WEB-INF目录下的HTML,JSP文件。 所以如果你的资源文件放在WEB-INF下,会提示404错误

猜你喜欢

转载自www.cnblogs.com/mytJava/p/12697899.html
今日推荐