这里是修真院前端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析前端知识/技能,本篇分享的是:
【什么是jsp?jsp的内置对象有哪些?】
1、背景介绍
百度百科是这么介绍jsp的:“jsp是一种动态网页技术标准。它出现的根本原因是为了简化servlet的设计,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。”
从以上的介绍可以得出,servlet是先出的,jsp是后出的。
所以,想要了解jsp,先学习一下servlet。
在地址栏输入"test3"访问该servlet,浏览器返回结果如下。
如果你右键查看网页源代码,可以看到是非常普通的HTML代码。
也就是,在servlet中,各种拼接HTML代码,最终返回给客户端一个HTML页面。
我们想要做的动态的网站,如果所有的HTML页面都通过这样的方式来形成,那岂不太繁琐了。
于是,诞生了jsp。
那么jsp是啥样的呢?
去浏览器访问的结果:
可以看到,jsp页面中的
<% for(int i=0; i<4;i++) { 等嵌入的长得像java代码都消失了。而helloworld这句话出现了4次。于是猜测,jsp是否就是HTML页面嵌入java代码,然后通过某种机制去执行这些java代码,最终返回给我们想要生成的HTML页面? 在系统的某个路径下,你可以找到被tomcat解析成java类的jsp页面。而且一个是.class文件,另一个是java文件。 这不正是我们所熟悉的java类和它被编译成.class字节码文件吗?  打开test\_jsp文件看一下,发现关键的部分: public void \_jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html;charset=UTF-8"); 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("\r\n"); out.write("\r\n"); out.write("\r\n"); out.write("\r\n"); out.write("
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP内置对象作用域</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP内置对象作用域</title>
pageVar.append("page02");
requestVar.append("page02");
sessionVar.append("page02");
applicationVar.append("page02");
%>
= <%=pageVar.toString()%>
= <%=requestVar.toString()%>
= <%=sessionVar.toString()%>
= <%=applicationVar.toString()%>
jsp forward 标签表示 当走到这里的时候,页面会跳转到page02.jsp。 这刚好就是一个会话的场景,
现在我们刷新一下页面,可以看到,page作用域变量的输出的值为page02,原本它的page01已经不见了。
request作用域的变量只在当前请求的中有效,当前的请求就是从page01到page02的一次跳转。
所以它的值把page01和page02都显示出来了。
session作用域的变量为当前会话,也就是只要浏览器不关闭,page02能一直叠加到上去。
application 对所有应用有效,也就是只要这个应用启动着,都要叠加。
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。
这里是技能树.IT修真院:http://www.jnshu.com,初学者转行到互联网行业的聚集地。"
欢迎加IT交流群565734203与大家一起讨论交流
手机扫一扫
移动阅读更方便
你可能感兴趣的文章