查缺补漏——Servlet和JSP

Servlet

1.Servlet作为web层框架,是单例的,线程不安全

        不应当在Servlet中创建成员变量,可能会存在一个线程对这个成员变量进行写操作,另一个线程进行读操作,造成数据不一致等一些问题。

        解决方法:如果要创建成员变量以供方法使用,可以创建有状态的成员变量。在成员变量的实体类中,有get方法用来获取值,但是不提供set方法。

2.实现Servlet的方式

三种:

     i.实现javax.servlet.Servlet接口        

        如果实现Servlet接口,需要实现里面的所有5个方法;

        3个生命周期方法:init(ServletConfig config),service(ServletRequest reqServletResponse res),destroy();

        其中,init方法只会在Servlet被创建后调用一次,destroy方法只会在Servlet被销毁前调用一次;service方法在每次处理请求时调用。

        2个用于获取Servlet信息和配置的方法,getServletInfo(),getServletConfig()

     ii.继承javax.servlet.GenericServlet类

        GenericServlet提供了Servlet的基本实现,继承它必须要重写Service方法。

     iii.继承javax.servlet.http.HttpServlet类

        HttpServlet更像是扩展了GenericServlet,并且提供了基于Http协议的实现,它先实现了GenericServlet的Service方法,然后调用重载的Service方法,参数转化为HttpServletReqeuest,HttpServletResponse。

3.Servlet生命周期

        当服务器收到第一个请求后,创建该Servlet类的对象;

        执行init()方法;

        调用Servlet实现类的Service方法,处理请求,分析Http请求的方式时GET或者POST,调用相应的doGet和doPost方法处理。

        最后当服务器关闭时销毁Servlet前调用destroy();

4.让服务器启动时即创建Servlet

        在web.xml中的<servlet>标签中配置<load-on-startup>标签,标签中给值需要非负整数。

5.ServletContext

        一个项目只有一个ServletContext对象,即application。

        可以在多个Servlet对象中获取这个唯一对象,使用它可以给多个Servlet传递数据,即上下文对象。

        在Servlet中通过调用getServletContext可以获取Servlet上下文对象。

        ServletContext application = this.getServletContext();

6.response通过设置状态码,调用setHeader方法设置头为location重定向。

        doGet(...){

            response.setHeader("Location","/工程名/Servlet类名");

            response.setStatus(302);

        }


JSP

1.原理:

        1.当JSP页面第一次被访问时,服务器会把jsp编译为java文件;

        2.然后把java文件编译为class文件;

        3.创建这个类的对象;

        4.然后调用这个类的service方法;

        5.当再次访问时直接调用它的service方法;

2.JSP9个内置对象

        reqeust,response,pageContext,out,page,config,session,application,Exception

3.配置Session最大不活动时间

        session最大不活动时间默认是30分钟。

        在web.xml中配置最大不活动时间

        <session-config>

            <session-timeout>30</session-timeout>

        </session-config>

4.session生命周期

        客户端第一调用getSession方法时,服务器创建session并将sessionID保存在客户端浏览器的Cookies中;

        每次调用时通过Cookies中的sessionID查找相应的session;

        当客户端关闭浏览器后,cookies销毁,浏览器中的sessionID丢失;

        服务器中的session到达最大不活动时间后被销毁;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值