Jsp内置对象

1.request对象

1).获取QueryString参数:

request.getParameter(String name);

2).请求转发数据传递

request.setAttribute(String name,Object object);
request.getAttribute(String name);

这两个方法的信息保存在request范围内,区别于Session对象的这两个方法。

3).获取客户端信息

2.Cookie对象

1).创建并保存Cookie

Cookie cookie_name =new Cookie("Parameter","Value");
response.addCookie(cookie_name);

实例如下:

1
2
3
4
5
6
request.setCharacterEncoding("utf-8");//设置请求的编码
String user = URLEncoder.encode(request.getParameter("user"),"utf-8");//从QueryString中获取用户名
String age = request.getParameter("age");//从QueryString中获取年龄
Cookie cookie = new Cookie("NameAge", name + "#" + age);//创建Cookie
cookie.setMaxAge(60 * 60 * 24 * 30);//设置Cookie有效期为30天
response.addCookie(cookie);//保存Cookie

2).读取Cookie

实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
Cookie[] cookies = request.getCookies();//获取用户浏览器中保存的Cookie数组
String user = "";
String age = "";
if (cookies != null) {
    //foreach遍历数组
    for (Cookie cookie : cookies) {
        if (cookie.getName().equals("NameAge")) {
            //utf-8解码获取user
            user = URLDecoder.decode(cookie.getValue().split("#")[0],"utf-8");
            age = cookie.getValue().split("#")[1];
        }
    }
}

Tip:对于Cookie中文的传值,我们需要对中文进行编码和解码,才能将信息保存到Cookie对象中。若我们直接获取QueryString中的中文,并把它加入到Cookie当中,会发生错误。错误代码如下:

1
2
3
4
5
String user = request.getParameter("user");//从QueryString中获取中文的用户名
String age = request.getParameter("age");//从QueryString中获取年龄
Cookie cookie = new Cookie("NameAge", name + "#" + age);//创建Cookie
cookie.setMaxAge(60 * 60 * 24 * 30);//设置Cookie有效期为30天
response.addCookie(cookie);//保存Cookie,运行的时候这里会发生错误

3).Cookie类的常用方法


4).删除Cookie

在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效;负值表示当浏览器关闭时,Cookie将会被删除;零值则是要删除该Cookie。如:

1
2
3
4
Cookie deleteNewCookie=new Cookie("newcookie",null);
deleteNewCookie.setMaxAge(0); //删除该Cookie
deleteNewCookie.setPath("/");
response.addCookie(deleteNewCookie);

3.Response对象

1).重定向网页

response.sendRedirect(String path);

2).禁用缓存

response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);

3).自动刷新

response.setHeader("refresh",10);//每隔10秒自动刷新页面

4).定时跳转

response.setHeader("refresh","5;URL=login.jsp");
//5秒后自动跳转到login.jsp页面

4.Session对象

1).基本操作

session.setAttribute(String name, Objects object);//创建
String str = session.getAttribute(String name).toString();//获取
session.removeAttribute(String name);//移除
session.invalidate();//销毁
long lastAccessedTime = session.getLastAccessedTime();//返回客户端最后一次与Session相关联的请求时间
int maxInactiveInterval = session.getMaxInactiveInterval();//返回客户端两个Session请求的最大时间间隔(秒)
session.setMaxInactiveInterval(1000);//设置Session有效时间(秒)

2).Session的一个简单应用

在index.jsp中输入你的名字,传递到session.jsp中,并保存到session对象中。最后在result.jsp页面中读取session对象你的名字的内容。

index.jsp文件:

1
2
3
4
5
6
7
8
<form id="form1" name="form1" action="session.jsp" method="post">
    <p>
        你的名字是:
    </p>
    <input type="text" name="yourName" value="">
    <br/>
    <input type="submit" value="Ok">
</form>

session.jsp文件:

1
2
3
4
5
6
7
8
<body>
<%
    request.setCharacterEncoding("utf-8");//设置请求的编码
    String name= request.getParameter("yourName");
    session.setAttribute("yourName",name);
%>
<a href="result.jsp">Result</a>
</body>

result.jsp文件:

1
2
3
<body>
<%=session.getAttribute("yourName")%>
</body>

5.Application对象

从web.xml中获取全部的初始化对象的一个实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<%
    Enumeration enumeration = application.getInitParameterNames();//获取全部的初始化参数
    while (enumeration.hasMoreElements()) {
        String name = enumeration.nextElement().toString();
        String value = application.getInitParameter(name);
%>
参数名:<%=name%>
参数值:<%=value%>
<%
    }
%>
</body>