不用声明就可以在jsp页面的脚本中使用,这便是内置对象,内置对象主要有:request、response,session、out、application。
request对象可以获得用户提交的信息,
如String item=request.getParameter("name");
对于传输过称重出现的乱码问题,我们可以使用:
byte[] temp=item.getBytes("ios-8859-1");
item=new String(temp,"utf-8");
此外,request还有一些方法,
getProtocol():获取请求使用的通信协议,如http/1.1等;
getServletPath():获取请求的jsp页面所在的目录;
getContentLength():获取http请求的长度;
getMeathod():获取表单提交信息的方法,get或者post;
getHeader(String s):获得请求中头的值;
getHeaderNames():获取头名字的一个枚举;
getHeaders(String s):获取头的全部值得一个枚举;
getRemoteAddr():获取客户的ip地址;
getRemoteHost():获取客户机的名称(获取不到,便获取ip);
getServerName():获取服务器的名称;
getServerPort():获取服务器的端口号;
getParameterNames():获取表单提交的信息题部分中name参数值的一个枚举;
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<MHML><BODY bgcolor=white><Font size=5>
<BR>用户使用的协议是:
<% String protocol=request.getProtocol();
out.println(protocol);
%>
<BR>获取接受用户提交信息的页面:
<% String path=request.getServletPath();
out.println(path);
%>
<BR>接受用户提交信息的长度:
<% int length=request.getContentLength();
out.println(length);
%>
<BR>用户提交信息的方式:
<% String method=request.getMethod();
out.println(method);
%>
<BR>获取HTTP头文件中User-Agent的值:
<% String header1=request.getHeader("User-Agent");
out.println(header1);
%>
<BR>获取HTTP头文件中accept的值:
<% String header2=request.getHeader("accept");
out.println(header2);
%>
<BR>获取HTTP头文件中Host的值:
<% String header3=request.getHeader("Host");
out.println(header3);
%>
<BR>获取HTTP头文件中accept-encoding的值:
<% String header4=request.getHeader("accept-encoding");
out.println(header4);
%>
<BR>获取用户的IP地址:
<% String IP=request.getRemoteAddr();
out.println(IP);
%>
<BR>获取用户机的名称:
<% String clientName=request.getRemoteHost();
out.println(clientName);
%>
<BR>获取服务器的名称:
<% String serverName=request.getServerName();
out.println(serverName);
%>
<BR>获取服务器的端口号:
<% int serverPort=request.getServerPort();
out.println(serverPort);
%>
<BR>获取用户端提交的所有参数的名字:
<% Enumeration en=request.getParameterNames();
while(en.hasMoreElements())
{ String s=(String)en.nextElement();
out.println(s);
}
%>
<BR>获取头名字的一个枚举:
<% Enumeration enum_headed=request.getHeaderNames();
while(enum_headed.hasMoreElements())
{ String s=(String)enum_headed.nextElement();
out.println(s);
}
%>
<BR>获取头文件中指定头名字的全部值的一个枚举:
<% Enumeration enum_headedValues=request.getHeaders("cookie");
while(enum_headedValues.hasMoreElements())
{ String s=(String)enum_headedValues.nextElement();
out.println(s);
}
%>
<BR>
<P> 文本框text提交的信息:
<% String str=request.getParameter("boy");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
%>
<BR> <%=str%>
<BR> 按钮的名字:
<% String buttonName=request.getParameter("submit");
byte c[]=buttonName.getBytes("ISO-8859-1");
buttonName=new String(c);
%>
<BR> <%=buttonName%>
</FONT></BODY></HTML>
response对象对用户的请求作出动态的响应,向客户端发送数据,由于page指令只能为contentType属性指定一个值来决定响应的MIME类型。如果要动态的改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值,
public void setContentType(String s)方法动态设置相应的MIME类型,参数s可取:text/html、text/plain、image/gif、image/x-xbitmap、 image/jpeg、image/pjpeg、application/x-shockwave-flash、 application/vnd.ms-powerpoint、 application/vnd.ms-excel、 application/msword;
response对象可以使用方法:
addHeader(String head,String value)或者setHeader(String head,String value)动态添加型的响应头和对应的值,并将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。
response重定向:使用response对象的sendRedirect(URL url)方法实现重定向。
http状态码表:1 消息,2成功,3重定向,4请求错误,5服务器错误。
session对象,当一个用户首次访问web目录下的某个jsp页面时,jsp引擎为值产生一个session对象,该session对象调用相应的方法可以存储用户在访问各个页面期间提交的各种信息;为用户产生的session对象中含有一个String类型的id号,jsp引擎同事将这个id号发送到用户浏览器的cookie中,每个用户对应着一个session对象(该用户的会话),不同用户的session对象互不相同,即具有不同的id号。
session对象与url重写,如果用户不支持cookie,那么用户在不同的网页之间的session对象可能是互不相同的,因为如果服务器无法将id存放到用户端,就不能建立session对象和用户的一一对应;可以通过url重写来实现session对象的唯一性,即是当用户从一个页面重新连接到另一个页面时,通过想这个新的url添加参数,basession对象的id穿戴过去,这样就可以保障用户在该网站各个页面中的session对象是完全相同的,可以使用response对象调用encodeURL()或者encodeRedirectURL()方法实现。
session的重要方法:
public void setAttribute(String key,Object obj)
public Object getAttribute(String key)
public Enumera tion getAttributeNames():session对象调用该方法产生一个枚举的对象,该对象使用nextElemets()遍历session中各个对象对应的关键字。
public long getCreationTime()session对象调用该方法获取该对象创建的时间,单位是毫秒。
public void removeAttribute(String name)session对象调用该方法移除关键字key对应的对象;
Session的生存期限
一个用户在某个web服务目录的session对象的生存期限,
依赖于session对象是否调用invalidate()使得session无效,
依赖于session对象达到了设置的最长的发呆状态时间;
依赖于服务器是否被关闭。
重新设置各个Web服务目录下的session对象的最长“发呆”时间。打开Tomcat安装目录conf目录下的配置文件web.xml,找到
<session-config>
<session-timeout>30</session-timeout>
</session-config>
public long getCreationTime()获取session创建的时间,