《JSP笔记》之六
第六章 JSP综合实例
§6.1 [案例14]强制用户登录
一般网站都希望用户注册后登录,或先登录,留下自己的信息后,才能进入到自己丰富多彩的页面内容。但用户也可能会通过直接输入URL 而绕过注册页面,直接进入到关键页面。
面对这种情况,所有的关键页面可以采用一种方法来强制用户登录。方法如下:在关键页面,检查用户的session类变量,若session类变量没有值,说明用户没有登录就进来了。这时就限制用户打开网页,而转到登录页面,要求用户登录。
本案例由2个网页构成:供用户登录的login.jsp文件和关键页面的内部检查部分check.jsp,若检查通过,则跳到主页index1.jsp。
其实,可以把检查网页check.jsp用include指令嵌入到每个网页中,即每个网页一打开,就先检查用户是否登录,若没有,则跳到login.jsp进行登录。 网页文件名login.jsp
<%@ page contentType=\
强制用户登录
强制用户登录
<% String login_flag=request.getParameter(\ if(login_flag!=null){ if(login_flag.equals(\ //login_flag标记为null,则说明不是从其它网页跳转而来。 //login_flag标记为false,则说明是从其它网页跳转来的。 out.println(\请从首页登录!\ } } %> <%
1
String username=request.getParameter(\ String password=request.getParameter(\ if(username!=null&&password!=null){ //若username和password都不为空,说明已接收到了输入。 if(username.equals(\ out.println(\用户名或密码不能为空!\ } else{ if(username.equals(\ session.setAttribute(\ session.setAttribute(\ session.setAttribute(\%>
欢迎来到本网站。
单击或5秒种后自动进入网站 <% response.setHeader(\ } else{ out.println(\用户名或密码错误!请重新输入!\ } } } %>
网页文件名check.jsp
<%@ page contentType=\
检查登录状况
<%String username=(String)session.getAttribute(\ String access=(String)session.getAttribute(\ out.println(username); out.println(access);
if(username!=null&&access!=null&&(access.equals(\ out.println(\欢迎\ out.println(\访问本网站!\
2
} else{
out.println(\请先从login.jsp网页登录!\
response.setHeader(\ } %>
网页文件名index1.jsp
<%@ page contentType=\
无标题文档
主页
运行后的效果请同学们自己上机实践。
§6.2 [案例15]商品信息列表
用表格输出数据库表是不错的方法。但有时,并不知道数据表的具体字段名和字段的个数。这时可以用结果集ResultSet类的ResultSetMetaData类对象的方法,来完成不知道表的字段个数和字段名字的情况下输出数据表的任务。相关方法见书第217至218页
这里,用到了
创建ResultSetMetaData类对象:
ResultSetMetaData rsm=rs.getMetaData(); 获取ResultSetMetaData类对象的字段个数的方法:
int cols=rsm.getColumnCount();
获取ResultSetMetaData类对象的字段名的方法:
out.print(rsm.getColumnName(th));
网页文件名listshop.jsp
<%@ page contentType=\
<%
try{ //启动异常处理
3
;
//连接数据库,
Class.forName(\
String
url=\
String user=\ String password=\
Connection conn= DriverManager.getConnection(url,user,password); //创建stmt对象 Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//创建sql查询语句
String sql=\ //执行sql查询
ResultSet rs=stmt.executeQuery(sql); if(rs!=null) {
ResultSetMetaData rsm=rs.getMetaData();
int cols=rsm.getColumnCount(); //取得rs记录集字段个数
out.println(\ //输出表格起始标签

