Web开发学习20200731

使用 HTML Form 的 Servlet

<FORM ACTION='servlet-URL' METHOD='{GET|POST}'>
	{HTML form tags and other HTML content}
</FORM>

GET 与 POST 的选择

HTTP GET 方法用于:

  • 请求对服务器没有负面影响
  • Form 数据量小
  • 数据的内容应在 URL 中可见,明文传输,安全度低

HTTP POST 方法用于:

  • 请求的处理过程改变服务器的状态,如在数据库中存储数据
  • Form 数据量大
  • 数据的内容应在 URL 中不可见(如,口令),安全度高

Servlet 生命周期

生命周期是指 servlet 实例在 web 容器中从:首次创建调用 init 方法开始初始化期,经过 service 方法运行期,一直到 destroy 方法销毁期。

Servlet 接口

方法:

  • init()
  • destroy()
  • service(ServletRequestreq,ServletResponse res )

Web 容器管理 servlet 实例的生命周期,用户不能调用这些方法。这种由容器来调用的方法,叫回调方法,特点是由容器决定什么时候调用

可提供这些方法的实现,来操纵 servlet 实例及资源


初始化参数

初始化参数的部署描述符:

<servlet> 
	<servlet-name>MyServlet</servlet-name> 
	<servlet-class>com.javakc.action.MyServlet</servlet-class> 
	<init-param> 
		<param-name>greetingText</param-name> 
		<param-value>Hello</param-value>
	</init-param>
	</servlet> 
<servlet> 
<servlet-name>SecondServlet</servlet-name> 
<servlet-class>com.javakc.action.SecondServlet </servlet-class>
<init-param>
	<param-name>driver</param-name>
	<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
	<param-name>url</param-name>
	<param-value>jdbc:oracle:thin:@localhost:1521:orcl</param-value>
</init-param>
<init-param>
	<param-name>username</param-name>
	<param-value>fu</param-value>
</init-param>
<init-param>
	<param-name>password</param-name>
	<param-value>fu</param-value>
</init-param>
</servlet>

初始化参数存储在与 Servlet 实例相关的 ServletConfig 对象中

Servlet 访问初始化参数:

public class MyServlet extends HttpServlet {
	private String greetingText;
	public void init() {
		greetingText = getInitParameter("greetingText");
		System.out.println(">> greetingText = ‗" + greetingText + "‗");
	} 
}

使用初始化参数:

// Generate the HTML response
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Hello Servlet</TITLE>");
out.println("</HEAD>");
out.println("<BODY BGCOLOR='white'>");
out.println("<B>" + greetingText + ", " + name + "</B>");
out.println("</BODY>");
out.println("</HTML>");

ServletContext

官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。一个 web 应用对应一个 ServletContext 对象。
在这里插入图片描述


ServletContext API

定义:
public interface ServletContext

主要方法:

  1. public Object getAttribute(String name);
    返回 Servlet 环境对象中指定的属性对象。
  2. public Enumeration getAttributeNames();
    返回一个 Servlet 环境对象中可用的属性名的列表。
  3. public String getInitParameter(String name);
    返回指定名字的 ServletContext 的初始化参数。
  4. public void setAttribute(String name, Object o);
    给予 Servlet 环境对象中你所指定的对象一个名称。
  5. public void removeAttribute(String name);
    从指定的 Servlet 环境对象中删除一个属性。
  6. public String getRealPath(String path);
    返回与一个符合该格式的虚拟路径相对应的真实路径的 String
  7. public RequestDispatcher getRequestDispatcher(String uripath);
    找到活动的资源(例如一个 Servlet,JSP 页面,CGI 等等)返回一个特定 URL 的 RequestDispatcher 对象
  8. public void log(String msg);
    写指定的信息到一个 Servlet 环境对象的 log 文件中

ServletContext 功能

  1. 访问共享的运行时属性
  2. 只读访问上下文初始化参数
  3. 写 Web 应用日志文件
  4. 定位资源
  5. 只读访问访问文件资源

Web 应用的生命周期

  1. Web 服务器启动时,初始化每个 Web 应用
  2. Web 服务器关闭时,销毁每个 Web 应用
  3. 可以创建―监听器‖对象触发这些事件

会话Session

Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间

Web 中的 Session也就是用户浏览这个 Web 应用所花费的时间,因此Session可以理解为一个特定的时间概念。

Q:为什么要引入Session概念?
A:需要一种机制或范围,记录用户的状态(数据),当用户再次发送请求时,可以到这个范围内的到用户的信息,而且这个范围是安全的,只能由创建它的用户访问,其他的用户是不能访问它的。

Web容器提供了一种机制,存储特定用户的会话信息,为每个用户保存一个“会话对象”。

在服务器端用来存储特定客户端的状态(数据)的机制叫会话,即 session

SessionID实际上是在客户端和服务端之间通过HTTP Requst和HTTP Response传来传去的。SessionID就是Web Server识别Session的主要依据。


Session API

定义:
public interface HttpSession

主要方法:

  1. public void setAttribute(String name, Object object);
  2. public Object getAttribute(String name);
  3. public Enumeration getAttributeNames();
  4. removeAttribute (String name) ;
  5. public void invalidate();
    终止这个 session绑定在这个 session 上的数据都会被清除
  6. public boolean isNew();
    判断这个 session 是不是新的
  7. public int setMaxInactiveInterval(int interval);
    客户端在不发出请求时,session 被 Servlet 引擎维持的最长时间
  8. public String getId();
    分配给这个 session 的标识符
  9. public long getCreationTime();
    建立 session 的时间
  10. public long getLastAccessedTime();
    返回客户端最后一次发出与这个 session 有关的请求的时间
  11. public int getMaxInactiveInterval();
    返加一个秒数,这个秒数表示客户端在不发出请求时,session 被 Servlet 引擎维持的最长时间
  12. public String[] getValueNames();
    以一个数组返回绑定到 session 上的所有数据的名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值