Session对象简介
session可以看做为服务器上的一个保管箱,用来保持客户端和服务端联系的持续状态。
一个用session对象实现的简单的登录功能。分为4个页面。
– login.jsp(登录表单页面)
– do_login.jsp(处理登录表单的页面)
– welcome.jsp(欢迎页面)
– loginout.jsp(退出页面)
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录表单</title>
</head>
<body>
<form action="do_login.jsp" method="post">
userName:<<input type="text" name="userName" >
password:<input type="password" name="password">
<input type="reset" value="reset">
<input type="submit" value="提交">
</form>
</body>
</html>
do_login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String userName = request.getParameter("userName");
String password = request.getParameter("password");
if (userName != null && password != null){
//在session中保存用户名
session.setAttribute("userName",userName);
response.setHeader("refresh","2;URL=welcome.jsp");
}
%>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<%--判断session对象中有没有key为userName的值,如果有如果没有则--%>
<%if (session.getAttribute("userName") != null){%>
欢迎:<%=session.getAttribute("userName")%>
<a href="loginout.jsp">注销</a>
<br>
<%}else{%>
请先登录
<a href="login.jsp">登录</a>
<%} %>
<%--用于判断session是否为新创建的,新创建的返回true。--%>
<%if (session.isNew()){ %>
<br>
欢迎新用户
<%}else {%>
欢迎老用户
<%} %>
</body>
</html>
loginout.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//清除session对象
session.invalidate();
//跳转到界面
response.setHeader("refresh","2;URL=welcome.jsp");
%>
application对象详解
代表当前的应用程序,他存在于当前服务器的内存空间中,应用开启就会自动生成一个application对象,如果应用没有关闭,这个application对象就会一直保持下去。application的生命周期更长。可以为用户共享全局信息。如共享当前在线用户。
<body>
当前服务器信息:<%= application.getServerInfo() %><br>
当前应用名称:<%= application.getServletContextName()%><br>
主机的名称:<%= application.getVirtualServerName()%><br>
</body>
当前页面访问次数的小示例。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>页面访问计数器</title>
</head>
<body>
<%
Object obj = application.getAttribute("counter");//从application对象中获取一个counter对象
if (obj == null){
application.setAttribute("counter",new Integer(1));//用于将一个键值对放入application对象中。
out.println("该页面被访问了1次<br>");
}else {
int counterValue = Integer.parseInt(obj.toString());
counterValue++;
out.println("该页面被访问了" + counterValue + "次<br>" );
application.setAttribute("counter",counterValue);
}
%>
</body>
</html>
config对象详解
代表当前jsp程序的配置信息,很少使用。用来配置servelet。
配置web.xml文件
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>JSPStudy</display-name>
<!--servlet标签和servlet-mapping标签是配对使用的,可以自定义名称,jsp-file可以指定文件,-->
<!--servlet-mapping中url-pattern进行url映射,这里用*通配符,表示/13/即可访问到config.jsp文件。-->
<servlet>
<servlet-name>config</servlet-name>
<jsp-file>/13/config.jsp</jsp-file>
<init-param>
<param-name>username</param-name>
<param-value>darkmi</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>jikexueyuan</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>/13/*</url-pattern>
</servlet-mapping>
</web-app>
config.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>config对象示例</title>
</head>
<body>
<%--获取指定的初始化信息--%>
用户名:<%= config.getInitParameter("username")%><br>
密码:<%= config.getInitParameter("password")%><br>
</body>
</html>
page对象详解
指向当前jsp页面本身。
<%
out.println("page对象的字符串:" + page.toString());
page.getClass();//返回当前的object类
page.hashCode();//返回当前的hashCode值
//page.equals(obj);//比较对象是否和指定对象相对
%>