Servlet In Web Application

Servlet In Web Application
 
HttpServlet 的执行步骤:
1.       容器收到调用请求的时候,先调用 HttpServlet service() 方法;
2.       如果 HttpServlet service() 方法没有被重写,那么就调用 Servlet service() 方法,
3.       这个方法中,会根据 requerst head 中的 method 参数来判断执行哪个函数。 方法名称为: XXX ,那么就执行 doXXX() 方法。
 
Note:
·          http1.0 中有三种方法: get,post,head. http1.1 中又增加了 5 个方法: put, options,delete,trace,connect.
·          如果 HttpServlet 中的 service() 被重写,那么就要人工的根据 method 判断需要调用的方法。
·          在浏览器中如果不指定 request 中的方法名,那么默认为 get 。比如链接,未声明 method 的表单,都默认是用 get 。所以当你想提交比较长的数据,或者不想把表单中的数据显示到链接的后面,那么就必须声明 form method 方法为 post.
 
HttpServletResponse:
1.   getWriter() getOutputStream() 方法在同一个 ServletResponse 中只能调用其中之一。否则会抛出 IllegalStateException 。但是同一个方法是可以多次调用的。
2.       Reponse.setRedirect(). 方法要在 response head 发送到客户端之前调用,否则会抛出 IllegalStateException serRedirect() 方法实际上就是通过 response head 告诉浏览器,转向到指定的地址。和重新在地址栏输入地址效果一样。原先发送过的 request 数据是没有的,更 forward() 方法有所区别。 Forward 方法对客户端来说是透明的,服务器端将收到的 request 转发给特定的资源。
 
Servlet Life Cycle
       1. Servlet 实例默认在容器第一次受到对该 Servlet 的请求的时候初始化,也可以进行预加载,在描述文件中设置 <load-on-startup>
       2. Servlet 的初始化调用的是 init(ServletConfig) 函数,其中 ServletConfig 包含了在描述文件中对这个 Servlet 设置的初始化参数。这个函数运行完毕之后 Servlet 才能进入 initialized 状态。
       3. GenericServlet(Servlet 接口 的一般实现 ) 中还有一个不带参数的 init() ,这方法是用来提供给用户重写的,当想在初始化的时候做些事情,重写这个方法既可, init(ServletConfig) 方法会自动调用这个方法。在 init() 中如果想使用 ServletConfig ,可以通过函数 getServletConfig() 来获得。如果重写了 init(ServletConfig) 方法,那么记住要在方法中使用 super.init(ServletConfig).
 
ServletContext
         ServletContext 是整个 Web Application 的公共对象,保存了这个应用的环境参数,也可以被共享所有 Servlet 的公共数据。他也有权利访问整个应用的说有资源。
         ServletContext 获得资源的方法有:
1. Java.net.URL getResource(String path)
2. java.io.InputStream getResourceAsStream(String path)
3. String getRealPah(String relativePath) // 返回本地绝对路径,但是不能读取 jar 包里面的文件。
 
RequestDispatcher
           有两种方式获得 RequestDispatcher, 通过 ServletContext ServletRequest, 这两种方式获得的 RequestDispatcher 的区别是:后者可以使用相对路径,而前者不可以。
          两个函数:
1.   Void forward(ServletRequest request,ServletResponse response)
response commited 之前,可以将 request response 路由到别的 servlet 或者 jsp 来继续处理。
2.   Void include(ServletRequest request,ServletResponse response)
response commited 之前,可以将 request response 路由到别的 servlet 或者 jsp 来处理,但是处理完成后还会回到本 servlet.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值