实时搜索: jsp内置对象有哪些

jsp内置对象有哪些

672条评论 3487人喜欢 6043次阅读 859人点赞
少上网弄些复制的来,那些我也能搜到! , 今天面试时,面试官这样问我?我虽回答:JSP内置对象是指不用声明就可以在JSP页面的脚本部分直接使用的组件,但他显然不以为然!请哪位达人,解释下,为什么内置对象可以直接使用,而不用实例化? , servlet中sesson是这样得到的HttpSession session=request.getSession(); , jsp中如何从request得到config内置对象,就像request.getSession()一样,通过调用,转移到session上来。 , JSP内置对象从哪里来的 ...

JSP有哪些内置对象和动作?它们的作用分别是什么?: 1、request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
2、response对象:response对象包含了响应客户请求的有关信息。
3、session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
4、out对象:是向客户端输出内容常用的对象
5、page对象:page对象就是指向当前JSP页面本身,有点象类中的this指针。
6、application对象:application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。
7、exception对象:exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。
8、pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9、config对象:config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。

jsp内置对象为什么可以直接使用?: 因为JSP经过编译后,其实是生成了,java代码,在这写代码中,自动加了 JSP内置对象的实例化

这是其中的一部分.
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {

JspFactory _jspxFactory = null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;

在servlet中获得了HttpSession的对象session那么这个session和jsp内置对象session是同一个吗: 在jsp中session是个内置对象。

而在servlet中想使用session就要先得到session。方法如下:
HttpSession session = request.getSession();
在jsp中或是在servlet中session对象使用方法一样,而且放在session中的数据都是保存在服务器端的。

jsp中config内置对象: 所谓内置对象就是jsp自身的对象不用得到就可以直接用,${config.xxxx}或者<%configxxx%>

关于JSP内置对象: jsp在执行时tomcat是将jsp页面装配成Servlet类,在编译执行,jsp页面元素会称为这个Servlet中_jspService方法,jsp的内置对象就是这个Servlet里面的全局变量或是这个方法的局部变量。我通过一个简单例子说明:1.有个jsp页面(test.jsp)<html></html>2.放到tomcat项目下,启动,访问后,会在work目录下生成个Servlet类,如下(内置对象就在这个类里面)test_jsp.java: package org.apache.jsp;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent { private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.List _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory;
private org.apache.AnnotationProcessor _jsp_annotationprocessor; public Object getDependants() {
return _jspx_dependants;
} public void _jspInit() {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
} public void _jspDestroy() {
} public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException { PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out; out.write("<html>\r\n");
out.write("</html>");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}

jsp 为什么out内置对象在flush方法后执行clear方法会抛出异常: 不为什么 API里面就是这样子写的 看粗体字 clear方法实现的时候 如果out已经flush了 就会抛异常
javax.servlet.jsp.JspWriter 类
clear
public abstract void clear()
throws java.io.IOException

Clear the contents of the buffer. If the buffer has been already been flushed then the clear operation shall throw an IOException to signal the fact that some data has already been irrevocably written to the client response stream.

Throws:
java.io.IOException - If an I/O error occurs

Struts2的action中如何获得JSP的内置对象javax.servlet.JspWriter.out: out对象在struts2的action中获取的方法如下:
javax.servlet.jsp.JspWriter类的对象,通过PrintWriter out = response.getWriter() 来获取out对象。
此外其他jsp内置对象的获取方法如下:
1、request对象
javax.servlet.ServletRequest 类的对象,通过GET/POST参数可获取。

2、response对象
javax.servlet.ServletResponse类的对象,通过GET/POST参数可获取。

3、session对象
javax.servlet.http.HttpSession 类的对象,通过request.getSession() 方法可以获得session对象。

4、application对象
javax.servlet.ServletContext类的对象,通过 this.getServletContext() 可以获得,this是servlet继承的javax.servlet.http.HttpServlet类的父类javax.servlet.GenericServlet类中的方法。

5、pageContext对象
javax.servlet.jsp.PageContext类的对象,通过:
JspFactory fac = JspFactory.getDefaultFactory();
PageContext pageContext = fac.getPageContext(this, request,response, null, false, JspWriter.DEFAULT_BUFFER, true) 方式获取pageContext对象。
注: pageContext对象中封装了jsp中的其他的内置对象,可以通过此对象过去其他的jsp中的对象。

  • polish是哪个国家

    苹果6s嘿siri怎么设置: 苹果手机Siri使用方法:1、按住主屏幕按钮;2、接上电源时只要对iPhone说“Hey Siri”即可与Siri对话;3、长按耳机控制键。启动Siri以后,麦克风图标正上方会有一句提示语“您好,请问需要什么帮助?”...

    328条评论 4650人喜欢 1638次阅读 426人点赞
  • 2010版word工具在哪

    苹果手机,怎么把微信上收藏的小视频,发在快手?: 1,首先播放你小视频,然后按住,弹出一个菜单,点击收藏 2,在我的收藏里,播放一下刚刚收藏视频,是为了在文件管理中找到此视频 3,找到自己手机的文件管理器,找到腾讯这个文件夹-tencent 4,找到MicroMsg...

    714条评论 4875人喜欢 5062次阅读 848人点赞
  • main怎么读

    苹果手机能边打电话能录音下来吗: 苹果手机通话时是不可以进行录音的,因为在苹果手机上面没有电话录音功能,如果想要录音的话,请参考以下这种方法:1、首先在苹果App Store商城中搜索下载一个叫WeTalkPro软件。2、然后打开苹果手机安装好了的W...

    211条评论 2184人喜欢 5842次阅读 236人点赞
  • nike 哪个好看

    我妈妈已经出差4天了,还有3周才能回来,你们帮我算算我妈妈还有多少天才能回来: 正确来说,应该是20天,23个小时59分60秒左右能回来! ...

    795条评论 5786人喜欢 1731次阅读 202人点赞
  • mp4是谁

    为什么苹果手机指南针不在桌面: 1、首先在打开指南针前,要打开iPhone上的【定位服务】,找到手机主屏上的【设置】2、然后找到【隐私】,点击进入【隐私】3、找到【定位服务】,进入后开启【定位服务】4、接着找到屏幕上的【指南针】APP,打开【指南针...

    367条评论 2776人喜欢 6315次阅读 314人点赞
  • ipad mini 4多少钱

    iPhone 6s与Siri用北京话聊天怎么设置?: 目前siri没有专门的北京话可选择,只能选择普通话哦~...

    372条评论 4982人喜欢 3406次阅读 846人点赞
  • 2018存定期哪个银行好

    iPhone 微信 清理储存空间里的文件在哪里可以找到?怎么将这些文件保存到手机呢?: 1找到微信的设置,一般在“我”下面。找到之后点击进去。2找到通用,点击进去,拉到最下面,有个清理微信存储空间。3进去之后里面会有很多的图片信息,随后只要点击想要删除的图片就可以进行删除。4清理完之后会提示你成功清理了...

    257条评论 6211人喜欢 4721次阅读 552人点赞
  • 1.25克是多少

    微信为什么发的小视频和现实中录的不一样呢?: 因为你微信的话用的是微信小视频,现实中录的是用手机本机的相机进行录视频的。软件不一样啊, ...

    391条评论 6181人喜欢 3371次阅读 827人点赞