什么是Servlet?servlet教程带你快速实战入门

1. 用来扩展web服务器功能(生成动态的Web页面)

以前的CGI效率不高,用servlet来扩展替换CGI

客户端发送请求给web服务器,web服务器启动并调用servlet。servlet容器负责解析数据包,也包括网络通讯相关的一些处理。然后将解析之后的数据交给servlet来处理。

注意:可以不使用服务器,而直接向servlet容器发送请求。因为servlet容器也有通信模块,所以可以直接把servlet容器当做web服务器来使用。

2. 组件规范

(1) 组件:是符合一定规范,并且实现部分功能的可以单独部署的软件模块。组件必须部署到容器中才能运行。

(2) 容器:也是符合一定规范,并且提供组件的运行环境的程序。

注意:单个的组件,单个的容器都没有意义。只有放在一起才能运行

Tomcat就是一个servlet容器也是一个web服务器

3. servlet容器是怎么运行的:

浏览器箱web服务器发送请求web服务器接收数据发送servlet容器然后实例化servlet调用init方法初始化然后调用service方法利用doget或者dopost处理

servlet将处理的结构返回给web服务器然后发送给客户端

servlet的优点只创建一个实例只初始化一次但是可以被调用多次。不同GCI创建多个实例,servlet存在线程安全问题。servlet效率比较高

ä»ä¹æ¯Servletï¼å¨åèç¹servletæç¨å¸¦ä½ å¿«éå®æå¥é¨

servlet的创建

public class servletest extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public servletest() {
        super();
    }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         response.setContentType("text/html");
                  PrintWriter out = response.getWriter();
                  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
                  out.println("<HTML>");
                  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                  out.println("  <BODY>");
                  out.print("    This is ");
                 out.print(this.getClass());
                  out.println(", using the GET method");
                  out.println("  </BODY>");
                  out.println("</HTML>");
                  out.flush();
                  out.close();
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          response.setContentType("text/html");
                   PrintWriter out = response.getWriter();
                   out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
                   out.println("<HTML>");
                   out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                   out.println("  <BODY>");
                  out.print("    This is ");
                   out.print(this.getClass());
                   out.println(", using the POST method");
                   out.println("  </BODY>");
                   out.println("</HTML>");
                  out.flush();
                   out.close();
    }
 
}

web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>zz.servletest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/test/hello</url-pattern>
  </servlet-mapping>
</web-app>

启动Tomcat 输入 :
localhost8080/zzservlet/test/hello

注意:

web.xml中servlet是servlet实例的一个线程 可以有多个servlet标签每个servlet代表一个请求处理

servletname是这个servlet的名称 可以为任意值但必须和servlet-mapping中的对应

servlet-class 是对应的Java类,即根目录下的Java目录 即不需要工程名 工程名是根目录,class是文件名称即package后的名称

url-pattern 是访问的路径 输入的访问地址为 网址+端口号+工程名+访问的路径

servlet与jsp的区别 即servlet 需要一个一个的out.print 而jsp 不需要一句一句地输出 其他的没有区别

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值