《JSP开发技术》读书笔记之内置对象

jsp中隐含定义了9个对象,也叫内置对象。

page:代表当前对象;
pageContext:页面上下文对象,记录当前页面的相关信息;
request:该对象封装了用户提交的信息;
response:对客户的请求做出动态的响应,向客户端发送数据;
session:会话对象,记录会话范围内的相关信息;
application:应用对象,记录应用范围内的相关信息;
out:输出流对象,用于向浏览器输出信息;
config:配置对象,记录当前页面的配置信息;
exception:异常对象,记录出现异常的页面的错误信息。

pageContext对象

属性设置和获取:
void setAttribute()
Object getAttribute()
void removeAttribute()
Object findAttribute()
int getAttributeScope()
Enumeration getAttributeNamesInScope()
页面转发和包含:
void forward()
<%
pageContext.forward("top.jsp");
%>
void include()
<%
pageContext.include("top.jsp", true);
%>

request对象

1、属性设置和获取:
<%
request.setAttribute("username", "david");
out.println(request.getAttribute("username"));
request.removeAttribute("username");

Enumeration temp = request.getAttributeNames();
while (temp.hasMoreElements())
    out.println((String)temp.nextElement() + "<br>");
%>
2、设置字符集编码:
void setCharacterEncoding(String arg0)
3、获取请求参数:
<%
String name = request.getParameter("username");
String hobby[] = request.getParameterValues("hobby");

Enumeration temp = request.getParameterNames();
while (temp.hasMoreElements())
    out.println((String)temp.nextElement() + "<br>");
	
Map map = request.getParameterMap();
Iterator it = map.keySet().iterator();
while (it.hasNext())
	out.println((String)it.next());

<%--该方法用于获取输入流对象,可通过输入流对象实现文件上传--%>
ServletInputStream getInputStream();
%>
4、获取请求行信息:
假设请求是:http://localhost:8888/test/hello.jsp?name=david
对应的http请求行:GET /test/hello.jsp?name=david HTTP /1.1
<%
out.println(request.getMethod());		GET
out.println(request.getRequestURI());	/test/hello.jsp
out.println(request.getQueryString());	name=david
out.println(request.getProtocol());		HTTP /1.1
out.println(request.getContextPath());	/test
out.println(request.getPathInfo());		null
out.println(request.getPathTranslated());	null
out.println(request.getServletPath());	hello.jsp
%>
5、获取请求头信息:
<%
out.println(request.getHeader("Accept-Language"));
out.println(request.getIntHeader("Content-Length"));

Enumeration ee = request.getHeaders("Accept-Encoding");
while (ee.hasMoreElements())
    out.println((String)ee.nextElement() + "<br>");
	
Enumeration ee = request.getHeaderNames();
while (ee.hasMoreElements())
    out.println((String)ee.nextElement() + "<br>");
%>
int getDateHeader(String name);
String getContentType();
int getContentLength();
Cookie[] getCookies();
6、获取网络信息:
<%
out.println(request.getRemoteAddr());
%>
String getRemoteHost();
int getRemotePort();
String getLocalAddr();
String getLocalName();
int getLocalPort();
String getServerName();
int getServerPort();
String getScheme();
String getRequestURL();
7、获取会话对象:
HttpSession getSession(boolean arg0);
HttpSession getSession();
8、获取请求分派对象:
RequestDispatcher getRequestDispatcher(String arg0);

 

response对象

1、设置状态行
<%
response.setStatus(response.SC_NOT_FOUND);
response.sendError(response.SC_NOT_FOUND, "this is a test");
%>
2、设置响应头信息
<%
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.setContentType("text/html;charset=gbk");
response.setCharacterEncoding("gbk");
response.setLocal(new java.util.Local("zh", "cn"));
%>
void setIntHeader(String name, int value);
void addIntHeader(String name, int value);
void setDateHeadder(String name, long value);
void addDateHeadder(String name, long value);
void setContentType(String s);
void setContentLength(int length);
setContentType()、setCharacterEncoding()和setLocal()都可以设置输出流的字符编码,区别是:
setCharacterEncoding()只能用来设置out输出流所采用的编码,但是其优先权最高,可以覆盖后两种方法中的设置;setContentType()既可以设置out输出流字符的编码方式,也可以设置浏览器接收到这些字符后以什么编码方式来解码,它的优先权居中;setLocal()也只能用来设置out输出流所采用的编码,优先权最低,会被前两种设置覆盖。
3、输出相应正文
ServletOutputStream getOutputStream();
PrintWriter getWriter();
void setBufferSize(int size);
int getBufferSize();
void flushBuffer();
void reset()
4、重定向
<%
response.sendRedirect("/jsp/other.jsp");
%>


session对象

1、属性设置和获取
void setAttribute(String name, Object value);
Object getAttribute(String name);
void removeAttribute(String name);
Enumeration getAttributeNames();
2、session状态相关操作
String getId();
long getCreationTime();
void setMaxInactiveInterval(int interval);
int getMaxInactiveInterval();
boolean isNew();
void invalidate();
long getLastAccessedTime();


application对象

1、属性设置和获取
void setAttribute(String name, Object value);
Object getAttribute(String name);
void removeAttribute(String name);
Enumeration getAttributeNames();
2、Web程序初始化参数设置
<%-- web.xml的参数配置 --%>
<%
out.println(application.getInitParameter("charset"));

Enumeration temp = application.getIniParameterNames();  
while (temp.hasMoreElements())  
    out.println((String)temp.nextElement() + "<br>"); 
%>
3、访问资源文件
(1) 返回某个资源目录中所有子目录和文件路径名称,如
<%
Set set = application.getResourcePaths("/WEB-INF");
Iterator it = set.iterator();
while (it.hasNext())
	out.println((String)it.next());
%>
(2) 返回指定的资源路径对应的一个URL,参数path以"/"开头,如
<%
java.net.URL url = application.getResource("/other.jsp");
%>
(3) 返回连接到某个资源上的输入流,如
<%
InpurStream is = application.getResourceAsStream("upload.jsp");
ServletOutputStream os = response.getOutputStream();
int len = is.read();
while (len != -1)
{
	os.write(len);
	len = is.read();
}
is.close();
os.close();
%>
上述代码实现了文件内容的传输,通过application.getResourceAsStream("upload.jsp")取得web路径下的资源文件upload.jsp的输入流,然后写到response的输出流中。
(4) 返回某个虚拟路径所映射的本地文件系统路径,如
<%
ServletInputStream sis = request.getInputStream();
String filepath = application.getRealPath("/upload.txt");
FileOutputStream fos = new FileOutputStream(filepath);
int len = sis.read();
while (len != -1)
{
	fos.write(len);
	len = sis.read();
}
fos.close();
%>
上述代码将请求信息中的实体内容写到web路径下的文件upload.txt中。


out对象

out是抽象类javax.servlet.jsp.JspWriter类型的一个实例对象,用于向客户端进行写操作。
void clear();
void clearBuffer();
void close();
int getBufferSize();
int getRemainning();
boolean isAutoFlush();
void newLine();
void print();
void println();


config对象

web.xml配置信息,貌似跟application对象的“web程序初始化参数设置”类似,将代码中的application改成config即可。
<%  
out.println(config.getInitParameter("charset"));  
  
Enumeration temp = config.getIniParameterNames();    
while (temp.hasMoreElements())    
    out.println((String)temp.nextElement() + "<br>");   
%>


exception对象

获取异常信息:
String getMessage();
将异常信息及其追踪输出至标准错误流:
void printStackTrace();


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值