也不知道到底要不要学这个知识,发现先学一学吧
一个相对来说比较快的看官方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>