- 了解静态和动态包含的不同
- 了解jsp:param和jsp:froward的使用
- 了解jsp:forward和response.sendRedirect的qubie
- 了解cookie的使用
- 了解session的使用
- 分别写一include静态包含、动态包含运用的程序,并比较、理解与静态包含的不同。
代码:
动态包含:
index_dynamic.jsp
head1.jsp
静态包含:
index1.jsp
head1.jsp
结果:
- 用<jsp:param> 和<jsp:forward>一起使用传递数值、写一个求立方的程序.
index_caculate.jsp
<body>
<form action="run_caculate.jsp">
<tr>
<td>
请输入数字:
</td>
<td>
<input type="text" name="number" value="<%=request.getParameter("number")%>"/>
</td>
</tr>
<tr>
<td>
立方后数值:
</td>
<td>
<input type="text" name="cubed_number" value="<%=request.getParameter("rt_number")%>"/>
</td>
</tr>
<tr>
<input align="center" type="submit" value="运算"/>
</tr>
</form>
</body>
run_caculate.jsp
<body>
<%
String str_number = request.getParameter("number");
double float_number = Double.valueOf(str_number);
double cute_number = float_number * float_number * float_number;
%>
<jsp:forward page="index_caculate.jsp">
<jsp:param name="rt_number" value="<%=cute_number%>"/>
</jsp:forward>
</body>
结果:
- <jsp:forward>与response.sendRedirect实现重定向的差别。
forward.jsp
<body bgcolor=blue>
<h1 align="center">forward页面跳转</h1><br>
<jsp:forward page="/forforward.jsp">
<jsp:param name="A" value="A"/>
<jsp:param name="B" value='<%=request.getParameter("A")%>'/>
<jsp:param name="C" value="C"/>
</jsp:forward>
</body>
forforward.jsp
<body>
<h1 align="center">forforward页面</h1></br>
<%=request.getParameter("A")%><br>
<%=request.getParameter("B")%><br>
<%=request.getParameter("C")%><br>
</body>
sendredirect.jsp
<body bgcolor=red>
<h1 align="center">sendredirect页面跳转</h1><br>
<%response.sendRedirect("sendsendredirect.jsp");%>
</body>
sendsendredirect.jsp
<body>
<h1 align="center">sendsendredirect页面</h1></br>
</body>
结果:
- 通过Cookie记录你对某一JSP页面(CookieTest.jsp)的访问次数。
login_with_cookie.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page language="java" isErrorPage="true" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
if("POST".equals(request.getMethod()))
{
Cookie cookieUsername = new Cookie("username",request.getParameter("username"));
Cookie visittimesCookie = new Cookie("visitTimes","0");
response.addCookie(cookieUsername);
response.addCookie(visittimesCookie);
response.sendRedirect(request.getContextPath()+"/cookie.jsp");
return;
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>带有cookie保存登录次数的登录页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div align="center" style="margin:10px;">
<fieldset>
<legend>登录</legend>
<form action="login_with_cookie.jsp" method="post">
<table>
<tr>
<td></td>
<td>
<%
if(exception!=null)
{
%>
<span style="color:red"><%=exception.getMessage()%></span>
<%
}
%>
</td>
</tr>
<tr>
<td>账号</td>
<td>
<input type="text" name="username" style="width:200px"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password" name="password" style="width:200px"/>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="登 录" class="button"/>
</td>
</tr>
</table>
</form>
</fieldset>
</div>
</body>
</html>
cookie.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page language="java" errorPage="login_with_cookie.jsp" %>
<%
request.setCharacterEncoding("utf-8");
String username = "";
int visitTimes = 0;
//所有的cookie
Cookie[] cookies = request.getCookies();
//遍历所有的cookie寻找 用户账号信息与登录次数信息
for(int i = 0; cookies!=null&&i<cookies.length; i++)
{
Cookie cookie = cookies[i];
if("username".equals(cookie.getName()))
{
username = cookie.getValue();
}
else if("visitTimes".equals(cookie.getName()))
{
visitTimes = Integer.parseInt(cookie.getValue());
cookie.setValue(""+ ++visitTimes);
}
}
//如果没有找到Cookie中保存的用户名,则转到登录页面
if(username == null || username.trim().equals(""))
{
throw new Exception("您还没有登录.请先登录");
}
//修改Cookie,更新用户的访问次数
Cookie visitTimesCookie = new Cookie("visitTimes",Integer.toString(visitTimes));
response.addCookie(visitTimesCookie);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>cookie</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div align="center" method="post">
<fieldset>
<legend>登录信息</legend>
<form action="login_with_cookie.jsp" method="post">
<table>
<tr>
<td>你的账号:</td>
<td><%=username%></td>
</tr>
<tr>
<td>登录次数:</td>
<td><%=visitTimes%></td>
</tr>
<tr>
<td></td>
<td>
<input type="button" value="刷 新" onclick="location='<%=request.getRequestURI()%>?ts=' + new Date().getTime();" class="button"/>
</td>
</tr>
</table>
</form>
</fieldset>
</div>
</body>
</html>
- 通过Session统计用户对某一JSP页面的在线人数(用几台机器访问进行测试)。
login_with_session.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login_with_session登录界面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1 align="center">login_with_session登录界面</h1>
<jsp:forward page="/onLineUser.jsp">
<jsp:param name="username" value="<%=request.getRemotePort()%>"/>
</jsp:forward>
</body>
</html>
onLineUser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="mySession.onLineUser"%>
<jsp:useBean id="onlineuser" class="mySession.onLineUser" scope="application"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'onLineUser.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<% session = request.getSession(false);%>
<%
String username = request.getParameter("username");
if(onlineuser.existUser(username))
{
out.println("用户<font color=red>" + username + "</font>已经登录");
}
else
{
session.setMaxInactiveInterval(50);
session.setAttribute(username, onlineuser);
out.println("欢迎新用户:<font color = red" + username + "</font>登录到系统");
}
out.println("<br>当前在线用户人数:<font color = red>" + onlineuser.getCount()+"</font>登录到系统!");
Vector vt = onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println("再线拥护列表");
out.println("<table border = 1>");
out.println("<tr><td>用户名</td></tr>");
while(e.hasMoreElements())
{
out.println("<tr><td>");
out.println((String)e.nextElement()+"</br>");
out.println("</td></tr>");
}
out.println("</table>");
%>
<centet>
<p>黄诗博制作</p>
<p></p>
<%
out.println("<p><a href='logout.jsp?username="+ username +"'>退出系统</a></p>");
%>
</centet>
</center>
</body>
</html>
logout.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="mySession.onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="mySession.onLineUser" scope="application"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>搞定jsp在线人数</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<h1>登录成功,欢迎您访问Java家</h1>
</center>
<%
String username = request.getParameter("username");
if(onlineuser.deleteUser(username))
{
out.println(username + "已经退出系统!");
}
else
{
out.println(username + "没有登录到系统!");
}
%>
<center>
<p>黄诗博制作</p>
<p></p>
<p><a href="logout.jsp">退出系统</a></p>
</center>
</body>
</html>
结果:
用qq浏览器访问
用谷歌浏览器访问
- forward和response.sendRedirect的区别,用两个很简单的方式回答,forward是向后台请求资源,后台找不到时,后台会自己寻找资源,然后把资源返回到客户端。而response.sendRedirect向后台请求资源,后台找不到,指出资源路径,会让客户端自己去寻找。
2.session和cookie的区别和联系,cookie主要用于客户端,而session用于服务端。Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
3.
静态包含: 先合并再翻译
动态包含: 先翻译再合并
4.了解jsp:param和jsp:forward的使用
forward用来跳转,param用来传输数据