Jsp基本内容

1.Jsp简介

JSP(Java Server Pages)是JavaWeb服务器端的动态资源,它与html页面的作用是相同的,显示数据和获取数据。
jsp: 作为请求发起页面,例如显示表单、超链接。 
: 作为请求结束页面,例如显示数据。
Servlet: 作为请求中处理数据的环节。
jsp的组成  :jsp = html + java脚本 + jsp标签(指令)
jsp中可直接使用的对象一共有9个,被称之为9大内置对象
3种java脚本: 
<%…%>:写java代码片段,(类似方法) 
<%=…%>:用于输出,用于输出一条表达式(或变量)的结果。 
<%!…%>:声明,用来创建类的成员变量和成员方法(类似与类)

<!-- --> Html 注释客户端可见
<%-- --%> Jsp 注释客户端不可见
// java 单行注释
/* */ java 多行注释
jsp注释:<%– … –%> 
当服务器把jsp编译成java文件时已经忽略了注释部分!

jsp原理

jsp其实是一种特殊的Servlet 

  • 当jsp页面第一次被访问时,服务器会把jsp编译成java文件
  • 然后再把java编译成.class
  • 然后创建该类对象
  • 最后调用它的service()方法
  • 第二次请求同一jsp时,直接调用service()方法。

2.九大内置对象

在jsp中无需声明即可直接使用的9个对象 
out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
config(ServletConfig):对应“真身”中的ServletConfig;
page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象,引用为Object类型;
pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
exception(Throwable):只有在错误页面中可以使用这个对象;
request(HttpServletRequest):即HttpServletRequest类的对象;
response(HttpServletResponse):即HttpServletResponse类的对象;
application(ServletContext):即ServletContext类的对象;
session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
pageContext(一个顶9个!) 

3.jsp四大作用域
Servlet中有三大域,而JSP中有四大域! 

Page 范围:只在一个页面中保存数据; javax.servlet.jsp.PageContext(抽象类)
Request 范围:只在一个请求中保存数据; javax.servlet.http.HttpServletRequest(接口)
Session 范围:在一次会话范围中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口)
Application 范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)

application.jsp(服务器上的所有用户共享数据)

<%//设置两个application页面的数据key value 
//在整个服务器上保存数据,供所有用户使用
application.setAttribute("name", "request王小波");
application.setAttribute("age",35);
%>
<h1>application设置完毕</h1>
<%
  //取值
 String name= (String)application.getAttribute("name");
  int age=(Integer)application.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age%></font>


session:整个会话(一个会话中只有一个用户) 

<%//设置两个session页面的数据key value 
//在一次会话范围内保存数据,仅供单个用户使用(只能用一个浏览器打开,其他浏览器不可以)
session.setAttribute("name", "request王小波");
session.setAttribute("age",35);
%>
<h1>session设置完毕</h1>
<%
  //取值
 String name= (String)session.getAttribute("name");
  int age=(Integer)session.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age%></font>


request:一个请求链! requestScope.jsp这个文件直接跳转到requestTarget.jsp,不显示requestScope.jsp这个页面!!

<%//设置两个request页面的数据key value 
// 只在一个请求内保存数据
request.setAttribute("name", "request王小波");
request.setAttribute("age",35);
%>
<h1>测试这个页面会显示吗?</h1>
<jsp:forward page="requestTarget.jsp"/>
<%
  //取值
 String name= (String)request.getAttribute("name");
  int age=(Integer)request.getAttribute("age");
%>

<font>姓名:<%=name %></font>
<font>年龄:<%=age%></font>


pageContext:一个jsp页面!这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据! (只看到这里)

<%//设置两个page页面的数据key value 
pageContext.setAttribute("name", "page王小波");
pageContext.setAttribute("age",35);
%>
<%
  //取值
 String name= (String)pageContext.getAttribute("name");
  int age=(Integer)pageContext.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age%></font>

JSP动作标签

动作标签是由tomcat(服务器)来解释执行!而html标签由浏览器来执行!

1.jsp包含指令 <jsp:include> 

 <%@ include file=”要包含的文件”%> 静态包含先包含,后编译处理;
<jsp:include page=”要包含的文件”> 动态包含先编译处理,后包含;
以后开发用动态包含;

2.<jsp:forward> 

例如:<jsp:forward page="xxx"/>,用来转发到指定页面 

        例如在a.jsp中存在如下内容:<jsp:fowrad page="b.jsp"/> 

a.jsp中的内容不会显示在浏览器上,而只是显示b.jsp的内容。而且在<jsp:forwad>标签下面的内容不会被执行。

3.<jsp:param> ,该标签是和的子标签,用来向其他页面传递参数。

猜你喜欢

转载自blog.csdn.net/qq_37692470/article/details/84839893
今日推荐