Servlet

Servlet的概念

①Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet与Web服务器的关系类似于Applet与Web浏览器的关系(这也是为什么Servlet技术被称为Servlet的原因),我们可以将Servlet想象成没有前端界面(faceless)的Applet。
②服务器端动态处理常见技术
CGI(common gateway interface)公共网关接口
PHP(HyperText PreProcessor)超文本预处理器
ASP(Active server page)活动服务器页面
Servlet(JSP-java server page)java服务器页面
③在Servlet中,修改web.xml、servlet类都要重新启动tomcat服务器才能生效

Servlet 的对象创建和生命周期

Servlet 是一个Java 类,该类要运行必须创建对象。
问题:
①由谁创建?
答:由读取web.xml 文件的服务器软件来进行创建。
②何时创建Servlet 对象?
(1)web程序,服务器端只有一个,但是访问的客户端数量没有办法控制
(2)客户端访问的时间没有办法限制。
在Tomcat服务器端,一个Servlet类一次只创建一个Servlet对象,该对象通过线程(对用户使用该Servlet的时间进行分段)使用

浏览器端服务器端
www.taobao.com/searchs = new SearchServlet()

③该Servlet 对象创建的时间有两个:
(1)服务器启动时创建,多出现在项目运行阶段,会检查所有当前服务器上的项目,检测项目中web.xml文件,在检测的同时,看到,就会自动的创建对象,并且保持在内存中。
(2)当用户第一次访问服务器上一个新的Servlet时,在开发过程中。
④生命周期:
Servlet生命周期:指Servlet对象在服务器内存中从创建到调用,到销毁的整个过程,主要研究该过程中哪些方法对我们的开发有用。
(1)实例化:当客户端通过URL请求的时候,web容器根据web.xml配置自动调用该Servlet的构造方法,实例化对象。
(2)初始化:通过该servlet对象调用init()方法,读取web.xml中该servlet的配置信息,为service方法提供相关数据。
(3)服务:通过该对象调用service()方法,如果是继承HttpServlet,则根据请求头信息中的请求方法,调用对应的doGet()/doPost()
(4)销毁:不是在service()方法调用完后,立即调用,而是由JVM来决定。当JVM需要销毁一些对象、释放内存空间的时候,才会去调用该实例的destroy()方法。


图片名称

3. Servlet 中的常用对象

Interface:
    javax.servlet.Servlet
Mothd:
    init(ServletConfig config)
    service(ServletRequest req, ServletResponse res)
    destroy()
public ServletConfig getServletConfig();//得到 web.xml 中的配置信息

②abstract Class:
⑴javax.servlet.GenericServlet
//重写父接口中的所有方法
//从web.xml文件中得到初始化参数的值
String getInitParameter(String name)
//代表web.xml配置文件
public ServletConfig getServletConfig()
//代表服务器中该项目的访问路径(上下文对象即项目名)
public ServletContext getServletContext()
Servlet学习笔记 - 廖润明 - 异次元蓝客
⑵javax.servlet.http.HttpServlet
doXXXX()
//返回上次修改 HttpServletRequest 对象的时间,该时间是自格林威治标准时间1970年 1月1日午夜起经过的毫秒数
protected long getLastModified(HttpServletRequest req)
③HttpServletRequest(interface) 实现了ServletRequest接口,为 HttpServlet提供请求信息.在 HTTP 协议中,规定了很多信息:请求头信息、请求内容。

    http://localhost:8080/servlet/index.jsp

    http:         request.getScheme();

    localhost:     request.getServerName();

    8080:          request.getServerPort();

    /servlet:      request.getContextPath();

    /index.jsp     request.getServletPath();

    /servlet/index.jsp: request.getRequestURI();

    完整请求路径: request.getRequestURL();

    IP 地址:      request.getLocalAddr();

④HttpServletResponse(interface):代表服务器向浏览器返回的响应直接输出内容到浏览器,使用Servlet输出HTML页面
PrintWriter out = response.getWriter();
out.print(“Hello :”);
设置响应的内容类型:
response.setContentType(“text/html; charset=UTF-8”);













注意:使用response对象跳转,可以跳到项目外的一个URL资源上
如:response.sendRedirect(“http://www.csdn.net”);
使用request对象跳转,只能在本项目资源中跳转
如:request.getRequestDispatcher(“url”).forward(request,response);
告诉浏览器不要缓存页面:

转自:
http://blog.163.com/magicc_love/blog/static/1858536622012983519998/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值