小白学习之servlet入门知识总结

也不知道到底要不要学这个知识,发现先学一学吧

一个相对来说比较快的看官方servlet,也就是看tomcat里的example,
1.先启动tomcat,然后应该直接 localhost:8080/examples吧
在这里插入图片描述

然后找了其中helloword了的原码

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
    
    
        response.setContentType("text/html");
        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>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

为了写这个servlet,还是重新创建一个web-app的maven项目吧
https://www.cnblogs.com/hafiz/p/5854693.html按照这个方法,将原来的Webapp里的java和resource给生成出来
然后创建一个helloServlet
在pom里加入

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>

HelloServlet

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
    
    
        //这个是响应的类型:html
        response.setContentType("text/html");
        //响应的输出流 
        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>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--web.xml是配置web的核心应用-->
  <!--首先就是注册servlet-->
  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>
  <!--再是servlet的映射-->
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/wzw</url-pattern>
  </servlet-mapping>
  
</web-app>

然后配置tomcat9
在这里插入图片描述

再运行
在这里插入图片描述

输入localhost:8080/wzw就OK了,为了测试成功,也可以再webapp下面随便创建一个xxx.html文件
再输入localhost:8080/xxx.html 来看是否能输入成功。

对于servlet的映射mapping,有以下几种方法:
1.一个servlet可以指定一个映射路径
访问:localhost:8080/hello

<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

2.一个servlet可以指定多个映射路径(只需要他们的servlet-name是一样的)
访问:localhost:8080/hello 和localhost:8080/hello1 都行

<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>

3.一个servlet可以指定通用映射路径
访问localhost:8080/hello/dawfcaf 后面的任何随便输入的数值都行

<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>/hello/* </url-pattern>
</servlet-mapping>

4.默认的请求路径
访问localhost:8080 就行,但是这样会把主函数覆盖,不太好

<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

5.指定一些后缀或者前缀等。。
wzw就是后缀
可以访问localhost:8080/adwfd.wzw 就行,这边值得注意的是,/.wzw是不行的,也就是前面是不能加映射的路径的,但你可以访问 localhost:8080/hello/waxs.wzw 这也是可以的

<servlet-mapping>
<servlet-name>hello</servelt-name>
<url-pattern>*.wzw</url-pattern>
</servlet-mapping>

猜你喜欢

转载自blog.csdn.net/qq_41115379/article/details/113743770