您的位置:首页 > 其它

servlet知识点<六>

2016-03-04 12:47 218 查看


一、连接池[重点]

1、ojdbc5.jar放到 tomcat安装目录/lib 中

2、配置连接池,tomcat安装目录/conf/context.xml,加在</Context>标签之前

<Resource

driverClassName=""

url=""

username=""

password=""

name="jdbc/oracle"

type="javax.sql.DataSource"

auth="Container"

maxActive="最大连接数10"

minActive="最小连接数5"

maxIdle="最大空闲连接数2"

/>

3、写代码

//获取到JNDI资源树的树根

Context context = new InitialContext();

//获取数据源

DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/oracle");

//获取连接对象

Connection conn = ds.getConnection();

//////把连接对象归还给连接池

conn.close();

JNDI:Java Naming and Directory Interface Java命名与目录接口

根据给定的资源路径和名称,查找资源

注意事项:1)context.xml中的配置,严格区分大小写

2)lookup方法的参数:java:comp/env/数据源的名称(和配置中的名称大小写一致)

二、request、session、ServletContext[重点]

1、request

1)客户端的请求

request.setCharacterEncoding("GBK");

String str = request.getParameter("文本框的名称");

String str = request.getParameter("url?后的参数名");

String[] likes = requst.getParameterValues("复选框的名称");

request.getRequestDispatcher("/url-pattern").forward(request, response);

2)作用域对象:

开始:client发出请求,即开始

结束:响应回到了client,即结束

使用:request.setAttribute("name", objval);//设置request中的命名属性

Object obj = request.getAttribute("name");//获取命名属性

2、session:同一个client的多次请求

1)作用域对象:

开始:client发请求,request.getSession(true)

结束:超时/遇到session.invalidate()

使用:session.setAttribute("name", objval);//设置session中的命名属性

Object obj = session.getAttribute("name");//获取命名属性

session.removeAttribute("name");//移除命名属性

2)特点:

周期比request长,跨越多个request

与client/IE绑定,一个IE对应着产生一个session

3)适合做的事情:同一个client的多次请求,想共享数据,如,登录后的帐号,在后续的请求页面中请显示

3、ServletContext:

1)是web.xml在内存中的表现。一个web应用,只有一个ServletContext对象(全局唯一)

ServletContext context = this.getServletContext();

String str = context.getInitParameter("name");//获取web.xml中配置的全局初始参数

web.xml,<context-param>....</context-param>

2)作用域对象:

开始:server启动

结束:server结束

使用:context.setAttribute("name", objval);//设置context中的命名属性

Object obj = context.getAttribute("name");//获取命名属性

context.removeAttribute("name");//移除命名属性

3)特点:

周期最长,从server启动 到 server结束

共享范围,同一个web应用中,被所有程序共享

4)适合做的事情:同一个web应用中,不同程序要共享数据时(不同的client/IE要共享数据)

举例:

游戏中的聊天室-聊天内容/在线用户列表(ServletContext)

购物车、登录用户信息、登录用户的权限(session)

错误提示信息(request)

三个作用域对象的对比:

开始 结束 共享范围 适合做的事情

request client请求 响应回client 同一请求 同一请求中要共享数据

session client请求,getSession(true)超时/invalidate() 同一IE 同一client要共享数据

context server启动 server停止 同一web应用 不同client要共享数据

三、Listener 监听器

1)事件模型:

事件源:发出事件的对象

事件:具体的事件/动作

监听器:事件处理程序

2)分类:生命周期监听器、命名属性监听器

生命周期监听器:ServletContextListener--针对ServletContext对象的创建和销毁进行监听

HttpSessionListener--针对HttpSession对象的创建和销毁进行监听

ServletRequestListener--针对ServletRequest对象的创建和销毁进行监听

命名属性监听器:ServletContextAttributeListener--针对ServletContext对象中命名属性的添加/修改/移除进行监听

HttpSessionAttributeListener--针对HttpSession对象中命名属性的添加/修改/移除进行监听

ServletRequestAttributeListener--针对ServletRequest对象中命名属性的添加/修改/移除进行监听

3)自定义监听器

写类 implements XXXListener

编写web.xml文件,在</filter-mapping>后面添加<listener>

<listener>

<listener-class></listener-class>

</listener>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: