JavaWeb学习笔记(二)

4 篇文章 0 订阅
3 篇文章 0 订阅

JavaWeb学习笔记(二)之 JSP

JSP的起源

在很多动态页面中,绝大部分的内容都是固定不变的,只有局部的内容需要产生变动。如果使用Servlet来输出这种动态页面的话,那么所有的静态内容也是要我们程序员来用Java代码实现,这样就会让我们的代码很臃肿,维护起来很麻烦。

因此,为了弥补Servlet的这种缺陷,JSP就产生啦。JSP是简化Senvlet编写的一种技术,它Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。

对JSP的认识

刚刚学习JSP的时候,对JSP的直观认识就是,这个就是一个html代码里面嵌套一些java代码啊!在JSP页面中编写的Java代码需要嵌套在==<%和%>==中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。

           <%
                  out.println("Hello World!");
           %>

JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEBINF及其子目录外的其他任何目录中,JSP页面的访问路怪与普通HTML页面的访问路径形式也完全一样。PS:WEBINF里面放的JSP文件可以作限制访问,即不想让别人可以直接访问的可以放在WEBINF里面。如果需要访问WEBINF里面的JSP文件,可以用转发来实现。

在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%=和%>之中,就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号

<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>

JSP的运行原理

首先,我们要明确JSP 的运行本质:JSP的本质就是一个Servlet。 我们可以去找JSP编译后对应的.jsp.java文件来看源码。

WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。

每个JSP页面在第一次被访问时,JSP引擎它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的cdass类文件,然后再由WEB容器(SerMet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Serdet程序。

因为JSP本质上是一个Servlet,所以我们也可以在web.iml文件上配置.jsp文件的映射。

<servlet-name>hellojsp</servlet-name>
	<jsp-file>/he11o.jsp</jsp-file>
	<init-param>
		<param-name>test</param-name>
		<param-value>testValue</param-value>
	</init-param>
</servlet>
<servlet-mapping>
	<servlet-name>hellojsp</servlet-name>
	<url-pattern>/hello.jsp</url-pattern>
</servlet-mapping>

JSP中的四个域对象

  • pageContex      page域
  • request     &emsp request域
  • session      &emspsession域
  • application      &emspcontext域
名称
pageContexpage域
requestrequest域
sessionsession域
applicationcontext域

在这里插入图片描述

JSP的九个隐藏对象

在这里插入图片描述

JSP的转发与重定向

请求的转发:RequestDispatcher.forwar
请求的重定向:HttpSerletResponse.sendRedirect

RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpSerletResponse.sendRedirect 方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

如果传递给HttpSerletResponse.sendRedirect方法的相对URL以"/“开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以”/"开头,它是相对于当前WEB应用程序的根目录。

调用HttoServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;调用RequestDispatcher,forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

HttpSerletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发田了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。、

RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServMetResponse sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

简单点总结就是
在这里插入图片描述

page 指令

1)怕个指令用于定义JSP页面的各种属性,无论怕个指令出现在JSP页面中的什么地方,它的作用都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。

2)page指令的常用属性:
①、import 属性:指定当前页面对应Servlet需要导入的类。

<%@ page import = "java.text.DateFormat" %>

②、session 属性:取值为true或false,指定当前session隐藏对象是否可用,也可以访问当前页面的对象。

<%@ page session = “false” %>

③、errorPage和isErrorPage:
errorPage指定若当前页面出现错误的实际响应页面时什么,其中 / 表示当前WEB应用的根目录。

<%@ page errorPage = "/error.jsp" %>

需要注意的是,errorPage 也可以在web.iml文件上配置。

<error-page>
	<l--指定出错的代码:404没有指定的资源,500内部错误。->
	<error-code>404</error-code>
	<l--指定响应页面的位置-->
	<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
	<l--指定异常的类型-->
	<exception-type>java.lang.ArithmeticException</exception-type>
	<location>/WEB-INF/error.jsp</location>
</error-page>

参考的资料

参考的资料为一下标题的超链接哦:
https://www.cnblogs.com/neuhao/p/7290570.html?utm_source=itdadao&utm_medium=referral

http://www.cnblogs.com/raozihao/p/7711582.html

https://blog.csdn.net/z291197968/article/details/54670939

https://blog.csdn.net/z291197968/article/details/54670939

JavaWeb学习笔记–其他文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值