Servlet的线程安全问题

1.Servlet的线程安全问题

(1)为什么说Servlet会有线程安全问题?

a.容器只会创建一个Servlet实例。

b.容器收到一个请求,就会启动一个线程来处理。
这样,就有可能有多个线程同时去调用某个Servlet实例,就有可能
产生线程安全问题(比如,这些线程要修改该实例的某个属性)。

(2)如何解决?

使用synchronized对有可能产生线程安全问题的代码加锁。

注:加锁会影响性能。

2.Servlet小结

(1)Servlet基础

1)什么是Servlet?

2)如何写一个Servlet?

3)Servlet是如何运行的?

4)http协议(了解)

a.什么是http协议?
b.特点
c.数据包的结构(消息头、状态码)
d.两种请求方式

(2)Servlet核心

1)如何读取请求参数值?

2)表单包含有中文参数值,如何处理?

3)Servlet输出中文,如何处理?

4)容器如何处理请求资源路径?

5)如何让一个Servlet处理多种请求?

6)转发与重定向

a.什么是重定向?
b.如何重定向?
c.重定向的特点
d.什么是转发?
e.如何转发?
f.转发的特点?
g.转发与重定向的区别?

7)Servlet的生命周期

a.什么是Servlet的生命周期?
b.分成哪几个阶段?
c.相关的接口与类

8)Servlet线程安全问题

a.为什么说Servlet会有线程安全问题?
b.如何解决?

9)Servlet上下文

a.什么是Servlet上下文?
b.如何获得Servlet上下文?
c.作用
    request、session、Servlet上下文绑订数据的区别
    (生存时间、可访问的范围)。

10)路径问题

a.什么是相对路径?
b.什么是绝对路径?
c.如何写绝对路径?

(3)状态管理

1)什么是状态管理?

2)如何进行状态管理?

3)Cookie

a.什么是Cookie?
b.工作原理 (set-cookie,cookie)
c.如何添加Cookie?
d.添加Cookie的三个问题
    编码问题
    生存时间问题
    路径问题  
e.如何读取Cookie?
f.cookie有哪些限制?

4)Session

a.什么是Session?
b.Session的工作原理
c.如何获得Session对象?
d.常用方法
e.Session超时
f.如何删除session?          

(4)数据库访问

a.什么是dao?
b.如何写一个dao?

(5)过滤器和监听器

a.什么是过滤器?
b.如何写一个过滤器?
c.优先级
d.初始化参数
e.优点(了解)
f.什么是监听器?
g.如何写一个监听器?

(6)案例

a.用户管理
b.登录(session验证)

3. jsp基础

(1)jsp是什么?

sun公司制订的一种服务器端动态页面技术规范。

jsp是一个以.jsp为后缀的文件,主要内容是html加少量的java代码,
容器会将jsp转换成一个对应的Servlet然后执行。

(2)如何写一个jsp?

step1.添加一个以.jsp为后缀的文件。

step2.可以使用如下元素。

1)html(css,js)

直接写即可

2)java代码

a. java代码片断

<%   java代码 %>

b. jsp表达式

<%=  java表达式 %>

c. jsp声明 (a1.jsp)

<%! 声明变量或者方法  %>

3)指令

a.什么是指令?

通过指令,可以告诉容器,在将jsp转换成Servlet时,做一些额外的处理,
比如导包。

b.指令语法

<%@ 指令名  属性=值  %>
注:
    多个属性要使用空格隔开。

c.page指令

import属性: 导包。
pageEncoding属性:指定jsp文件的编码。
contentType属性: response.setContentType();
session属性:

d.include指令

e.taglib指令

4)隐含对象

(3)jsp是如何执行的?

step1.容器要将jsp转换成一个Servlet:

html(css,js)  ------> service方法里面,使用out.write输出。
<%    %>      ------> service方法里面,照搬。
<%=   %>      ------> service方法里面,使用out.print输出。
<%!   %>      ------> 给Servlet添加新的属性或方法。

隐含对象)

    a. 什么是隐含对象?
        在jsp里面可以直接使用的对象

    b. 为什么可以直接使用这些隐含对象?
        因为容器会添加获得这些隐含对象的代码

    c. 有哪一些隐含对象?
        c1. request
        c2. response
        c3. out
        c4. session
        c5. application
        c6. exception
        c7. pageContext(页面上下文)
            c1. pageContext是什么?
                 容器会为每一个jsp实例创建唯一的一个符合pageContext接口要求的对象,该对象我们可以称之为页面上下文。
                 注:只要jsp实例还在,pageContext就会一直存在。

            c2. 作用1  绑定数据
                 注:绑定到pageContext上的数据,只有对应的jsp实例能够访问,类似"钱包"。

                作用2  提供了一些方法用来获得其他所有的隐含对象
        c8. page: jsp实例本身
             注:jsp实例是jsp对应的servlet对象

        c9. config 

注释)

a. <!-- 注释内容 -->
             如果注释是java代码,不会生成java代码

b. <%-- 注释内容 -- >
    如果注释是java代码,

step2.容器再去调用该Servlet:

容器会将该Servlet先编译,然后实例化、初始化、调用、销毁。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值