Servlet基本概念

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一句话概括Servlet</span>

Servlet是服务器端调用和执行的java类,产生HTML文档提交给客户端,显示给用户看。

Servlet容器


Servlet生命周期

1、创建servlet实例

<servlet>
      <servlet-name>XXXServlet</servlet-name>
      <servlet-class>Servlet绝对路径</servlet-class>
      <load-on-startup>1</load-on-startup>
</servlet>

2、初始化 init(ServletConfig)

在Servlet的生命周期中,该方法执行一次

3、service(ServletRequest request, ServletResponse response)方法

解析客户端请求-〉执行业务逻辑-〉输出响应页面到客户端

4、destroy()方法

应用重新装载,或服务器关闭时调用destroy()方法

Servlet线程安全问题

如何解决?

1.同步锁synchronized
<pre name="code" class="java"><pre name="code" class="javascript" style="font-family: Arial;"><pre name="code" class="java"><span style="font-weight: normal;"><span style="font-size:14px;">public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 加了synchronized后,并发访问i时就不存在线程安全问题了,
         * 为什么加了synchronized后就没有线程安全问题了呢?
         * 假如现在有一个线程访问Servlet对象,那么它就先拿到了Servlet对象的那把锁
         * 等到它执行完之后才会把锁还给Servlet对象,由于是它先拿到了Servlet对象的那把锁,
         * 所以当有别的线程来访问这个Servlet对象时,由于锁已经被之前的线程拿走了,后面的线程只能排队等候了
         * 
         */
        synchronized (this) {//在java中,每一个对象都有一把锁,这里的this指的就是Servlet对象
            i++;
            try {
                Thread.sleep(1000*4);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            response.getWriter().write(i+"");
        }
        
    }</span></span>
 
 
2.SingleThreadModel接口(标记接口)
让Servlet去实现一个SingleThreadModel接口,如果某个Servlet实现了SingleThreadModel接口,那么Servlet引擎将以单线程模式来调用其service方法。
事实上,在Servlet API 2.4中,已经将SingleThreadModel标记为Deprecated(过时的)没有定义任何方法和常量的接口称之为标记接口
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值