您的位置:首页 > Web前端 > JavaScript

JSP九大内置对象的基本使用--简单教程

2014-08-10 21:20 711 查看
JSP九大内置对象的基本使用--简单教程

致敬:

1.由于时间仓促以及本人经验等客观原因,文中也许会存在些许错误, 请大家多多指教留言!

2.作者本着一颗谦逊严谨的态度与读者互相探讨学习!

3.如过采纳了您的修改意见,我会在第一时间在文中更改,并将会在文中的末尾处声明您的贡献!

正文:

JSP九大内置对象的基本使用<新手使用教程!>

本文意在阐述jsp九大内置对象,写作提纲:

1.什么是jsp?

2.jsp的九大内置对象是什么?

3.每个对象下的常用方法有哪些?

jsp是一种动态网页技术标准。全名为JavaServer Pages,其根本是一个简化的设计,他实现了Html语法中的java扩张(以 <%, %>形式)。在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。通常JSP页面很少进行数据处理,只是用来实现网页的静态化页面,只是用来提取数据,不会进行业务处理。jsp页面:

<%@ page contentType="text/html;charset=GB2312"%>
<%request.setCharacterEncoding("gb2312");%>
<html>
<head>
<title>request对象_例1</title>
</head>

<form action="" method="post">
<input type="text" name="text1">
<input type="submit" value="提交">
</form>


注释:(1)<%@ page contentType="text/html;charset=GB2312"%>设置文档类型, text/html;charset=GB2312 代表文本类型是的html文件, 字符集编码是GB2312。
    (2)<%request.setCharacterEncoding("gb2312");%>设置请求的编码格式为GB2312,将别其他面提交到这个页面的时候所带的参数,表单都设置成GB2312格式的编码 
1.request对象

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
方 法 说 明 :

主要常用方法:

void
setAttribute(String key,Object obj) 设置属性的属性值 
object getAttribute(String name) 返回指定属性的属性值 

String
getParameter(String name) 返回name指定参数的参数值 

请求方式request.getMethod()

请求的资源相对路径request.getRequestURI()

请求的资源绝对路径request.getRequestURL()

不常用方法:
Enumeration
getAttributeNames() 返回所有可用属性名的枚举 

String getCharacterEncoding() 返回字符编码方式 
int getContentLength() 返回请求体的长度(以字节数) 
String getContentType() 得到请求体的MIME类型 
ServletInputStream getInputStream() 得到请求体中一行的二进制流 
Enumeration getParameterNames() 返回可用参数名的枚举 
String[] getParameterValues(String name) 返回包含参数name的所有值的数组 
String getProtocol() 返回请求用的协议类型及版本号 
String getScheme() 返回请求用的计划名,如:http.https及ftp等 
String getServerName() 返回接受请求的服务器主机名 
int getServerPort() 返回服务器接受此请求所用的端口号 
BufferedReader getReader() 返回解码过了的请求体 
String getRemoteAddr() 返回发送此请求的客户端IP地址 
String getRemoteHost() 返回发送此请求的客户端主机名 
String getRealPath(String path) 返回一虚拟路径的真实路径

设置接收请求的字符集request.setCharacterEncoding()

请求用的协议request.getProtocol()

请求的文件名request.getServletPath()

请求的服务器的IPrequest.getServerName()

请求服务器的端口request.getServerPort()

客户端IP地址request.getRemoteAddr()

客户端主机名request.getRemoteHost()

常用方法详述说明:

一、request.getParameter() 和request.getAttribute()区别

1.request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。

2.request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。

request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部还有一点就是,HttpServletRequest类有setAttribute()方法,而没有setParameter()方法。拿一个例子来说一下吧,假如两个WEB页面间为链接关系时,就是说要从1.JSP链接到2.JSP时,被链接的是2.JSP可以通过getParameter()方法来获得请求参数.

假如1.JSP里有

<form name="form1" method="post" action="2.jsp">
请输入用户姓名:<input type="text" name="username">
<input type="submit" name="Submit" value="提交">
form>


的话在2.JSP中通过request.getParameter("username")方法来获得请求参数username:

< % String username=request.getParameter("username"); %>


但是如果两个WEB间为转发关系时,转发目的WEB可以用getAttribute()方法来和转发源WEB共享request范围内的数据,也还是说一个例子吧。有1.JSP和2.JSP

1.JSP希望向2.JSP传递当前的用户名字,如何传递这一数据呢?先在1.JSP中调用如下setAttribute()方法:

<%
String username=request.getParameter("username");
request.setAttribute("username",username);
%>
<jsp:forward page="2.jsp" />


在2.jsp中通过getAttribute()方法获得用户名字:  

<% String username=(String)request.getAttribute("username"); %>


二、request.getAttribute()与request.setAttribute()

request.getAttribute("nameOfObj")可得到JSP页面一表单中控件的Value。其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。
而不同页面间传值使用request.setAttribute(position,nameOfObj)时,只会从a.JSP到b.JSP一次传递,之后这个request就会失去它的作用范围,再传就要再设一个 request.setAttribute()。而使用session.setAttribute()会在一个过程中始终保有这个值。
注意.:JavaScript与JSP中不能相互传值,因为JavaScript运行在客户端,而JSP运行在服务器端。若想使它们之间可以相互传递参数,可以在JSP中设置一个hidden控件,用它的value结合上面所说的用法来传递所需的数值。例如:

<input type="hidden" name="hidd" value="value" />
2.response

 response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
方 法 说 明 
sendRedirect(java.lang.String location) 重新定向客户端的请求 
String getCharacterEncoding() 返回响应用的是何种字符编码 
ServletOutputStream getOutputStream() 返回响应的一个二进制输出流 
PrintWriter getWriter() 返回可以向客户端输出字符的一个对象 
void setContentLength(int len) 设置响应头长度 
void setContentType(String type) 设置响应的MIME类型 
1 设置头信息:response.setHeader("头信息内容","头信息参数"); 
常用的刷新refresh,例如:response.setHeader("refresh","1"); 
几秒后跳转:response.setHeader("refresh","2:URL=XXX");
2 重定向--response跳转:response.sendRedirect("跳转地址"); 
此语句执行后,页面地址也变为跳转后的地址 
面试中常见问题:两种跳转的区别:地址栏不改变--属于服务器端跳转 
执行到跳转语句后无条件立刻跳转--之后的代码将不再执行 
注意:若使用forward跳转则一定要在跳转前释放掉全部资源; 
使用forward时,request设置的属性(setAttribute)依然能保留到下一个页面
通过传递参数
response.sendRedirect("跳转地址"): 
地址栏改变--属于客户端跳转 
页面的所有代码执行完毕之后再跳转 
不能保存request属性,地址栏改变了,客户端跳转
通过对URL地址的重写传递参数
3 设置Cookie 
Cookie是服务器端保存在客户端的一组资源 
通过Cookie实现保存密码或者多长时间无需再输入密码等功能 
设置Cookie的方法:Public Void addCookie(Cookie cookie) 
Cookie是通过服务器端设置到客户端上去的--response 
如果要在服务器端取得Cookie--request 
在request对象中有Public Cookie[] getCookies()方法 
在使用request对象取得全部Cookie时会出现JSESSIONID,表示唯一的客户端在服务器上的编号,这个值在客户端第一次访问服务器端之后设置
默认情况下Cookie只针对当前浏览器有效,如果需要长留在计算机上,可以设置Cookie的保存时间,通过设置Cookie最大保留时间方法:setMaxAge()

3.session对象

     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
序号方 法 说 明 

long getCreationTime() 返回SESSION创建时间 

public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号 

long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间 

int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms) 

String[] getValueNames() 返回一个包含此SESSION中所有可用属性的数组 

void invalidate() 取消SESSION,使SESSION不可用 

boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入 

void removeValue(String name) 删除SESSION中指定的属性 

void setMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取消(ms)  

<%@page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*" %>
<html>
<head><title>session对象_例1</title><head>
<body><br>
session的创建时间:<%=session.getCreationTime()%>  <%=newDate(session.getCreationTime())%><br><br>
session的Id号:<%=session.getId()%><br><br>
客户端最近一次请求时间:<%=session.getLastAccessedTime()%>  <%=newjava.sql. Time(session.getLastAccessedTime())%><br><br>
两次请求间隔多长时间此SESSION被取消(ms):<%=session.getMaxInactiveInterval()%><br><br>
是否是新创建的一个SESSION:<%=session.isNew()?"是":"否"%><br><br>
<%
session.putValue("name","霖苑编程");
session.putValue("nmber","147369");
%>
<%
for(int i=0;i<session.getValueNames().length;i++)
out.println(session.getValueNames()[i]+"="+session.getValue(session.getValueNames()[i]));
%>
<!--返回的是从格林威治时间(GMT)1970年01月01日0:00:00起到计算当时的毫秒数-->
</body>
</html>
今天有点忙明天继续吧

参考:

http://www.cnblogs.com/jams742003/archive/2009/06/24/1510166.html
http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html
http://wenku.baidu.com
http://bbs.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 经验 jsp java web