JavaWeb初级学习 之 JSP

1.为什么会出现JSP

* HTML的优点是可以很好的显示页面,但是缺点是不能处理用户的请求
* Servlet的优点是可以处理用户请求并给用户响应,但是缺点是不能很好的显示页面

* 我们将HTML与Servlet的优点进行强强联合,就出现了JSP,即HTML+Servlet=JSP


2.JSP简介

* JSP全称是Java Server Pages,Java服务页面
* JSP页面不能脱离服务器单独运行,即JSP页面必须运行在服务器上
* JSP页面就是能写Java代码的HTML,它还是披着HTML外衣的Servlet

* JSP本质上就是一个Servlet


3.JSP的运行原理

运行一个JSP页面需要经过以下步骤:
* 1)JSP引擎将.jsp页面翻译成.java文件
* 2)Java虚拟机将.java文件编译成.class文件
* 3)JSP容器根据Java类创建对象并用该对象处理用户请求并给用户响应
例如:我们访问index.jsp
第一次访问时:
* JSP引擎将index.jsp页面翻译成index_jsp.jave文件
* Java虚拟机将index_jsp.java文件编译成index_jsp.class文件
* JSP容器创建index_jsp对象,用它来处理用户的请求并给用户响应


以后再访问index.jsp(前提是index.jsp页面没有被修改),直接使用JSP容器创建的对象来处理用户请求和给用户响应


4.JSP的基本语法

JSP模板元素

就是HTML中的标签,在HTML中怎么使用在JSP中就怎么使用


JSP脚本片段
* 格式:<% .......%>
* JSP脚本片段用来写Java代码
* JSP脚本片段中的Java代码或原封不动的复制到_jspService方法中

* 可以再JSP页面中写多个脚本片段,但是要保证多个脚本片段拼接后的完整性

<!-- 2.JSP脚本片段 -->
<%
	for(int i = 0 ; i < 10 ; i++){
%>
<h1>生活的美好就在前方!勇敢前进吧……</h1>
<%
	}
%>

JSP表达式
* 格式:<%=对象%>
* JSP表达式主要用来将一个对象输出到页面
    
 <%
//创建一个date对象
Date date = new Date();
%>
<!-- 3.JSP表达式 -->
<h1><%=date %></h1>

JSP页面中的注释

* HTML注释:在浏览器解析页面的时候被忽略,生存时机最长
* Java注释:在Java虚拟机将java文件编译成class文件是被忽略,生存时机适中

* JSP注释:在JSP引擎将jsp文件翻译成java文件时就被忽略,生存时机最短


5.JSP指令

格式:<%@ 指令名  属性名1="属性值1"  属性名2="属性值2" %>

page指令


<!-- page指令: 告诉JSP引擎如何解析当前页面-->
<!--
 language属性:用来设置JSP页面使用的语言,默认值是java,而且只有一个值就是java
 contentType属性:用来告诉浏览器使用什么字符集解析当前页面
 pageEncodeing属性:用来设置当前jsp页面使用的字符集
 errorPage属性:用来设置当前页面出现错误时要转发的页面
 isELIgnored属性:用来设置是否忽略EL表达式,默认值是false,不忽略,一般不改
 session属性:用来设置是否可以使用Session对象,默认值是true,可以使用,一般不改
 isErrorPage属性:用来设置当前页面是否是错误页面,默认值是false,不是错误页面;当改为true时,当前页面即为错误页面,就可以使用Exception对象来打印错误信息
     -->

include指令
    
<!-- include指令:用来将其他页面包含到当前页面中 -->
<!-- 静态包含 -->
<h1>十年修得同船渡</h1>
<!-- file属性:用来设置被包含的页面的地址 -->
<%@ include file="/include/1.jsp" %>

6.JSP动作标签

格式:<jsp:标签名></jsp:标签名>

* jsp动作标签由服务器解析,解析时会转换成响应的Java代码


forward标签

     
<!-- forward标签:主要用来进行请求的转发 -->
<!-- page属性:用来设置要转发的页面的路径 -->
<jsp:forward page="/index.jsp"></jsp:forward>

include标签
    
 <!-- include标签:主要用来将一个页面包含到当前页面中,我们称它为动态包含 -->
<!-- 动态包含即翻译、编译当前页面也翻译、编译被包含页面 -->
<h1>窗前明月光</h1>
<jsp:include page="/include/2.jsp"></jsp:include>

7.JSP中的九大隐含对象

JSP中的九大隐含对象可以再jsp页面中直接使用
什么是隐含对象
不用声明就可以直接使用的对象
这九个隐含对象在jsp页面中之所以可以直接使用是因为它们已经在_jspService方法中已经声明并赋值

九大隐含对象都是什么:

request
* 类型:HttpServeletRequest
* 作用:是一个域对象
* 在Servlet中可以直接使用
pageContext
* 类型:PageContext
* 作用:是一个域对象
session
* 类型:HttpSession
* 作用:是一个域对象
* 在Servlet中通过以下方法获取
         
HttpSession session = request.getSession();

application
* 类型:ServletContext
* 作用:是一个域对象
* 在Servlet中通过以下方法获取
         
ServletContext servletContext = this.getServletContext();

response
* 类型:HttpServletResponse
* 作用:与Servlet中的response一样,封装了响应报文,在JSP中基本不用
config
* 类型:ServletConfig
* 作用:获取JSP的初始化参数
out
* 类型:JspWriter
* 作用:与PrintWriter一样,用来想浏览器响应一个页面或页面的片段
page
* 类型:Object
* 作用:相当于this,值当前对象,没用
exception 
* 类型:Throwable

* 作用:获取异常信息,前提是isErrorPage属性设置为true才可以使用该对象


8.JSP中的四个域对象

域指区域或者说是范围,在JavaWeb中指不同的Web资源(jsp、html、Servlet),在JavaWeb中有四个域对象,分别是pageContext、request、session、application,因为在JavaWeb中不同的资源之间需要共享数据,所有就有了域对象,在域对象中都维护着一个map,来保存对象。域对象都有以下三个方法:


void setAttribute(String key , Object value)
//向域对象中添加属性
Object getAttribute(String key)
//根据属性名获取域对象中的值
void removeAttribute(String key) 
//根据属性名移除域对象中的值

JavaWeb中有四个域:

page域
* 范围:当前页面
* 对应的对象:pageContext
* 类型:PageContext
* 作用:获取page域中的属性值
request域
* 范围:当前请求
* 对应的对象:request
* 类型:HttpServletRequest
* 作用:获取request域中的属性值
session域 
* 范围:当前会话
* 对应的对象:session
* 类型:HttpSession
* 作用:获取session域中的属性值
application域
* 范围:当前Web应用
* 对应的对象:application
* 类型:ServletContext
* 作用:获取application域中的属性值
域对象使用的原则
* 能使用小的就不用大的
Servlet与JSP的分工
* Servlet用来处理请求,JSP负责显示页面



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值