Jsp学习

jsp:

>Java  Servlte  Page

什么是jsp?

>从用户角度看待,就是一个网页,从程序员角度看待,其实就是一个java类,它继承了servlet,所以可以直接说jsp就是一个Servlet。

为什么会有jsp?

>平常我们见到的 html 网页属于静态网页, 很难在它显示一些动态改变的数据,比如查询学生列表, 搜索具体某个员工信息 ,  这些数据由于都是存放在服务器的数据中 。 需要从数据库中取出来,然后显示到网页上。 html 网页时无法完成这项工作的, 这时候就需要jsp了。 jsp  其实可以看成是 java + html  的结合体 , 可以在jsp网页中编写java代码。

另外 jsp 最后会被翻译成一个 java 类, 这个 Java 类,实际上技术一个 HttpServlet  翻译成 java文件存放在 : tomcat目录/work/Catalina/localhost/项目名/org/apache/jsp 里面

怎么用JSP?

指令写法      <%@指令名称 %>

>page指令

有什么用?用于设置当前页面的一些信息。

怎么用?默认创建好jsp, 就会在最上面第一行,加入该指令了。

*language:表明jsp页面中可以写java代码

*contentType:用于表示当前页面的内容类型以及使用的编码。 这个属性其实是告诉浏览器的。

                       contentType="text/html;charset=UTF-8"

                       text/html       MIMEType 这是一个文本,html网页

*pageEncoding :jsp内容编码

*extends:用于指定jsp翻译成java文件后,继承的父类是谁,一般不用改

*import:导包使用,一般不用手写

*session:值可选的有true  or   false,用于控制在这个jsp页面,能够直接使用session对象(true与false的区别具体可看翻译后的  java文件)

                 其实对应背后的是 ,jsp翻译成java后,在代码里面时候会调用 getSession() . 创建内置session对象。 默认是true。表示会创建session对象

                 true:在代码里面会有getSession()的调用         

                 false:不会有该方法的调用,即没有session对象,在页面上自然也就不能使用session了

*errorPage: 表示该界面假设有错误,那么会跳转到哪个页面去。 要求的值是一个页面地址。

*isErrorPage:上面的errorPage用于指定错误的时候跑到那一个页面去,那么这个isErrorPage就是声明某一个页面到底是不是错误的页面

>include指令

有什么用?可以嵌套另外一个jsp页面的内容,<%@include file="other2.jsp" %>----> 表示,引入a.jsp的内容。

#实现细节:把另一个页面的所有内容拿过来一起输出,所有的标签元素都包含进来

>taglib指令

有什么用?用于导入标签库 ,多用于引入 JSTL标签库

<%@taglib prefix=""  uri="" %>

uri:标签库路径         prefix:标签库的别名

JSP动作标签

<jsp:include page=""></jsp:include>

<jsp:param value=""  name="" />

<jsp:forword page=""></jsp:forword>

*jsp:include

<jsp:include page="other2.jsp"></jsp:include>

包含指定的页面,这里是动态包含,即不把包含的页面所有元素标签全部拿过来输出,而是把jsp的运行结果拿过来

*jsp:forword

跳转页面使用, 其实是请求转发的简写方式而已。 与request.getRequestDispatcher("").forward(request, response); 等同。

<jsp:forword  page=""></jsp:forword>

前往哪一个页面

如果想关心到底底层是如何走的,可以去看jsp翻译成的那个java文件,里面有具体的翻译后的代码,再配合servlet源代码,即可找到最终的答案,就是:请求转发

*jsp:param

用于指定参数的意思,在包含某个页面的时候,或者在跳转某个页面的时候,加入这个参数。 这个jsp:param 可以在其他两个动作标签里面嵌套使用 ,比如:

<jsp:forword  page="other.jsp">

         <jsp:param  name="address"  value="beijing" />

</jsp:forword>

在other.jsp中获取参数

 

<br>收到的参数是:<br>

取值:<%=request.getParameter("address") %>

JSP内置对象

所为内置对象,就是我们可以直接在jsp页面中使用这些对象,不用创建

-pageContext

-request

-session

-application

以上4个是作用域对象

*作用域:表示这些对象可以直接存值,他们的取值范围有限定。setAttribute  和  getAttribute

使用作用域来存储数据<br>
<%
	pageContext.setAttribute("name", "page");
	request.setAttribute("name", "request");
	session.setAttribute("name", "session");
	application.setAttribute("name", "application");
%>
		
取出四个作用域中的值<br>
		
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>

作用域范围大小:

pageContext-----request----session----application

四个作用域的区别:

*pageContext【PageContext】

作用域仅限于当前的页面,一般使用该对象来存取值以及可以获取到其他八个内置对象(但是由于其他内置对象都可以直接使用,所以该作用一般比较少用了)

*request【HttpServletRequest】

通常在 jsp 页面用来存取值 和 跳转,作用域仅限于一次请求,只要服务器对该请求做出了响应,这个域中存的值就没有了

* 跳转:

    request.getRequestDispatcher("").forward(request, response);

* 存取值

    使用的方法是  setAttribute  和  getAttribute .

*session【HttpSession】

默认情况下, jsp 翻译成 java 文件后, 会在里面的方法调用 request.getSession().  那么咱们可以直接在 jsp 里面使用 session 对象。 

当然这有一个开关来确定的。 即, 在顶部的 page 指令里面有一个属性叫做 : session="true" 默认即是 true, 如果是 true , 那么就会创建 session 对象。

所以可以连起来理解就是 : 如果顶部的 page 指令中的 session 属性 的值 是 false , 那么我们在 jsp 页面上,将无法使用 session 对象。因为翻译成的 java 类中,根本没有创建这个对象。 我们一般使用这个对象来存取值

作用域限于一次会话(多次请求与响应)当中

*application【ServletContext】

可以做ServletContext的事情。 但是一般在jsp页面里面,我们使用该对象,多数情况都是来进行存值和取值。

该对象的作用域是最大的,直到服务器停止。也就是说,在A.jsp页面中使用该对象存值, 在任何一个jsp页面上,都可以取值。整个工程都可以访问,服务器关闭以后就不能访问了

-outJspWriter

该对象其实是 JspWriter 的实例 , 页面上的内容都是靠该对象去执行输出的。  写法如下:

    <%  
        out.write("输出的内容");
    %>

想想, response 也是可以获取到 PrintWrite 来输出的。 那么两者有什么区别呢? 

大家可以自己私底下做实验, 便会得知  out 的内容其实 先写到 response 的缓冲区来的, 然后先输出 response 自身的内容,尔后再输出 out 的内容

-responseHttpServletResponse

一般使用这个对象来执行 跳转 , 当然也可以执行页面内容输出

* 跳转

写法与 java 代码一致、 response.sendRedirect("");

-exceptionThrowable】           

这个对象,默认 jsp 是不会创建的, 只有在 page 指令里面写上了 isErrorPage="true"  才会创建。 连起来解释的话,就是: 只有错误的页面,才会创建该对象。
使用该对象, 我们可以在错误的页面上,输出错误的信息

-page【Object

就是这个jsp页面翻译成的java类的实例,有点像咱们 java 类中的那个 this 

-configSevletConfig

可以在里面获取 Servlet 配置的一些参数。

   

 

                        

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值