Servlet基础理论

简介: Servlet 1.ServletConfig l  一个ServletConfig对象是servlet container在servlet initialization的时候传递给servlet的。

Servlet

1.ServletConfig

l  一个ServletConfig对象是servlet container在servlet initialization的时候传递给servlet的。

 

ServletConfig包涵 ServletContext 和 一些 Name/Value pair (来自于deployment descriptor)

 

ServletContext接口封装了Web应用程序的上下文概念

 

2.会话跟踪

1) Session

l  当一个Client请求多个Servlets时,一个session可以被多个servlet共享。

 

l  通常情况下,如果server detect到browser支持cookie,那么URL就不会重写。

 

 

2) cookie

l  在Java Servlet中,如果你光  Cookie cookie = newCookie(name,value)

那么当用户退出Browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。

 

如果要存储 cookie,需加一句   cookie.setMaxAge(200)

 

l  cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.

 

3) URL Rewriting

在使用URL Rewriting来维护Session ID的时候,每一次HTTP请求都需要EncodeURL()

典型的用在两个地方

1)     

out.print(“form action=\” ”);
out.print(response.encodeURL(“sessionExample”));
out.print(“form action=\” ”);
out.print(“method = GET>”);

2)    

 out.print(“<p><a href=\” ”);
out.print(response.encodeURL(“SessionExample?database=foo&datavalue=bar”));
out.println(“\” >URL encoded </a>”);

 

3.SingleThreadModel

默认的,每一个servletdefinition in a container只有一个servlet class的实例。

只有实现了SingleThreadModel,container才会让servlet有多个实例。

 

Servlet specification上建议,不要使用synchronized,而使用SingleThreadModel。

 

SingleThreadModel(没有方法)

保证servlet在同一时刻只处理一个客户的请求。

SingleThreadModel是耗费资源的,特别是当有大量的请求发送给Servlet时,SingleThreadModel的作用是使包容器以同步时钟的方式调用service方法。

这等同于在servlet的service()方法种使用synchronized.

 

Single Thread Model一般使用在需要响应一个heavy request的时候,比如是一个需要和数据库打交道的连接。

 

 

2.   在重载Servlet地init()方法后,一定要记得调用super.init( );

 

3.   the client通过发送一个blank line表示它已经结束request

而the server通过关闭the socket来表示response已结束了。

 

4.   一个Http Servlet可以送三种东西给Client

1)  a single status code

2)  any number of http headers

3)  a response body

 

5.   Servlet之间信息共享的一个最简单的方法就是

System.getProperties().put(“key”,”value”);

 

6.   Post和Get

Post:将form内各字段名称和内容放置在html header内传送给server

Get:  ?之后的查询字符串要使用URLEncode,经过URLEncode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。

     

Get是Web上最经常使用的一种请求方法,每个超链接都使用这种方法。

 

7.   Web.xml就是Web Applicatin 的deployment descriptor

作用有:组织各类元素

        设置init param

        设置安全性

 

8.   Request Dispatcher用来把接收到的request forward processing到另一个servlet

要在一个response里包含另一个servlet的output时,也要用到Request Dispatcher.

 

9.   Servlet和Jsp在同一个JVM中,可以通过ServeltContext的

setAttribute( )

getAttribute( )

removeAttribute( )

来共享对象

10.  利用request.getParameter( )得到的String存在字符集问题。

可以用  strTitle =request.getParameter(“title”);

        strTitle =new String(strTitle.getBytes(“8859-1”),”gb2312”);

 

如果你希望得到更大得兼容性

        Stringencoding = response.getCharacterEncoding();    

//确定Application server用什么编码来读取输入的。

        strTitle =new String(strTitle.getBytes(encoding),”gb2312”);

相关文章
|
机器学习/深度学习 算法 Shell
【实操:人脸矫正】两次定位操作解决人脸矫正问题
【实操:人脸矫正】两次定位操作解决人脸矫正问题
487 0
|
10月前
|
JavaScript 信息无障碍
无障碍工具条本地化安装部署
无障碍工具条安装部署教程
343 1
无障碍工具条本地化安装部署
|
SQL 数据库
springCloud之seata
springCloud之seata
301 1
|
消息中间件 负载均衡 监控
基于kafka项目之Keepalived高可用详细介绍
基于kafka项目之Keepalived高可用详细介绍
|
监控 安全 算法
提升编程效率的利器: 解析Google Guava库之RateLimiter优雅限流(十)
提升编程效率的利器: 解析Google Guava库之RateLimiter优雅限流(十)
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
948 3
|
存储 监控 负载均衡
InfluxDB最佳实践:数据模型设计与查询优化
【4月更文挑战第30天】本文探讨了InfluxDB的最佳实践,重点在于数据模型设计和查询优化。合理选择字段类型,根据业务逻辑划分Measurement,利用Tags进行索引优化,以及适时数据归档和清理,能有效提升性能。查询优化包括使用索引、精简查询语句、应用聚合函数及限制返回结果。分布式查询和分片适用于大规模数据集,以实现并行查询和负载均衡。这些策略旨在帮助用户优化InfluxDB的性能,进行高效时序数据分析。
1057 0
|
存储 NoSQL 关系型数据库
Redis List 底层三种数据结构原理剖析
Redis List 底层三种数据结构原理剖析
380 0
|
存储 机器人 芯片
嵌入式 STM32 步进电机驱动,干货满满,建议收藏
嵌入式 STM32 步进电机驱动,干货满满,建议收藏
嵌入式 STM32 步进电机驱动,干货满满,建议收藏
|
存储 缓存 前端开发
自定义OAuth2组件实现对授权码登录模式的封装
所谓OAuth2其实就是Open Authorization,即开放授权,是一种授权机制或者说是一种协议。OAuth2允许用户授权第三方应用访问其存储在开放平台(授权服务器)中的数据而不需要提供密码。授权服务器根据OAuth2协议标准制订一套授权的API,第三方网站接入开放平台之后即可通过其提供的API来实现用户授权和获取授权服务器中用户的信息的功能。