一、制作简单版的历史浏览记录
<h2>浏览记录</h2>
<%
//从Cookie中取出所有的value值打印
Cookie[] css=request.getCookies();
if(css!=null){
//循环遍历
for(Cookie c:css){//c.getName():nid
//如果不是sessionID并且也不是当前用户的就打印
if(!c.getValue().equals(session.getId())&&!"sname".equals(c.getName())){
out.print("<a href='/web5/news/read.jsp?nid="+c.getName()+"&tt=1'>"+URLDecoder.decode(c.getValue(),"utf-8")+"</a><br/>");//解码
}
}
}
%>
二、内置对象application:
application类似于系统的“全局变量”,用于实现用户之间的数据共享 application对象的常用方法:
void setAttribute(String key, Object value):
以键/值的方式,将一个对象的值存放到application中:application.setAttribute("LOGINED_USER", new ArrayList());
Object getAttribute(String key):根据键去获取application中存放对象的值。
application是JSP内置对象 实现服务内数据的共享 在服务内值存在一个对象实例 application对象的常用方法:
类型 | 方法名称 | 说 明 |
void | setAttribute(String key,Object value) | 以key/value的形式保存对象值 |
Object | getAttribute(String key) | 通过key获取对象值 |
String | getRealPath(String path) | 返回相对路径的真实路径 |
这几可以做一个 统计网页访问次数 业务处理页面 设置网页访问计数器初始值 使用application保存计数器 页面加载时首先取出application中原始计数器的值 在原始计数器值基础上执行+1操作,然后在保存到application中。
<%
//application的作用域:在服务器打开和关闭 之间有效
//应该先拿值
Integer count=(Integer)application.getAttribute("count");
if(count!=null){//拿到了 说明以前有人访问过
count++;//在原来的访问量上递增1
}
else{
count=1;
}
//int count=0;
count++;
application.setAttribute("count", count);//存值 键,值
%>
您是第<%=application.getAttribute("count") %>位访问该网站的用户!
%>
三、JavaBean封装
JavaBean的优势:
解决代码重复编写,减少代码冗余;
功能区分明确,避免业务逻辑处理与页面显示处理集中在一起造成混乱;
提高了代码的维护性。
符合规范的Java类都是JavaBean
JavaBean的分类
封装数据 :按照OO原则,属性与数据库表字段相对应 属性私有 具有public的set/get方法
public class Comment {
private String cid; // 用户名
private String ccontent; // 电话
public Comment () {
}
public void setCid(String cid) {
this. cid= cid;
}
public String getCid() {
return cid;
}
…//其它属性的setter、getter方法 }
封装业务: 具有实现特定功能的方法和方法实现 通常与一个封装数据的JavaBean对应
public class CommentControl { public int getMaxId() {
int result = 0;
try {
Connection con = ConnectionManager.getConnction();
String strSql = "select max(cid) from comment ";
PreparedStatement pStatement = con.prepareStatement(strSql);
ResultSet rs = pStatement.executeUpdate();
if(rs.next()){
result = rs.getInt(1)+1;
}
} catch (SQLException sqlE) { sqlE.printStackTrace();
}
return result;
}
}
在JSP页面中导入JavaBean
//引入JavaBean
<%@ page import="org.jbit.news.bean.*" %>
//使用JavaBean
<% Comment c = new Comment();
c.setCid(1014);
c.getCauthor();
%>