Jsp基础

Jsp基础

概念

1.引入度神概念:JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

2.博主俗人理解:由于Jsp的底层是由Servlet来实现的,在Jsp没有诞生之前,我们使用Servlet来进行编写动态Web页面,但要不停的在response里输出各种html格式的字符串,这样做实在是太麻烦,而且代码混乱,不利于维护,于是Sun公司便提供了Jsp来供我们使用,Jsp允许在页面其中执行java代码,并且封装好了九大隐式对象来供我们调用,来实现与浏览器的交互。这样我们便可以把页面代码放到jsp当中,而逻辑代码放在servlet中,代码变得清晰而易于维护了。

以下为一个显示时间的JSP,我们将Java代码嵌入到了JSP当中

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

时间:
š
<%
Date date=new Date();
String time=date.toLocaleString();
out.write(time);
%>

</body>
</html>
  • JSP模板元素:JSP中的的html代码,被成为模板元素。
  • JSP脚本表达式:用于程序将数据输出到浏览器<%=变量或表达式%>

    比如我们刚才的时间输出以out的方式将数据打印了出去,其实我们也可以这样输出

时间:
<%
Date date=new Date();
String time=date.toLocaleString();
out.write(time);
%>

<%=time %>
  • JSP脚本片段:<% XXXXXX %> 其中XXXXXX为java代码,以包含java代码的这种格式被称为脚本片段。

    例如:

for(int i=0;i<10;i++)
{
    system.out.println("hello,world");
}
  • JSP声明:JSP声明的代码会声明到service方法的外面 <%! %>
    例如:
<%!
    public void print(){
    System.out.println("hello,world");
}
%>
  • JSP注释:格式:<%– –%>注释代码用
  • JSP Page指令:Page指令用于定义JSP的各种属性,如我们刚才时间那段代码中的片段 <%@ %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>

其中第一行定义的属性,该JSP的语言为Java,格式为text/html,浏览器应使用UTF-8来解码,本页面编码为UTF-8
第二行的属性为由于你在JSP脚本片段中执行Java代码时,用到了Data类,所以故将此包导入。

JSP 的Page指令中有多种属性,本文不具体介绍,请读者自己私下查看

  • JSP Include指令(静态包含):字面意思,包含指令,可以将多个页面包含到一个JSP页面当中,例如

JSP1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
我是JSP1<br/>

JSP2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
我是JSP2<br/>

JSP3

<%@include file="/demo/JSP1.jsp"%>
我是分隔线<br/>
<%@include file="/demo/JSP2.jsp"%>

输出结果:
我是JSP1
我是分割线
我是JSP2


JSP九大隐式对象

刚才我们说了,JSP的底层是由Servlet实现的,所以每个JSP页面在第一次被访问时,则先会编译成Servlet,在JSP编译成Servlet的同时,SUN公司为我们封装好了九大隐式对象来供我们使用,这也是为什么我们前文可以直接使用out.write(time);来向浏览器写入时间数据时,却不需要声明out对象和实例化out对象,因为这一切都由Sun公司为我们封装和实例化好了。我们只需要使用就行了。

  • Request:请求对象
  • Response:响应对象
  • Session:会话对象
  • Application:其实就是ServletContext
  • Config:JSP配置对象
  • Page:代表JSP本身的this
  • Out:输出对象,带缓冲功能的JspWritter
  • PageContext: JSP的作用域,可以用来保存数据,也可以可以获得其他八大隐式对象的引用。
  • Exception:JSP异常对象

javaee的四大作用域

域用来划分生效范围,例如在Request域中存储了键为name值为张三的数据,一旦该整个请求响应结束,这数据消失,无法再获取。

  • ServletContext域:Web应用范围。
  • Session域:一个会话范围
  • Request域:请求范围内
  • Page域:一个JSP页面范围

PageContext获取其他域的数据

<% request.setAttribute("name","zhangsan");
   String data=(String)pageContext.getAttribute("name",PageContext.REQUEST_SCOPE);
   out.write(data);
   String data1=(String)pageContext.findAttribute("name");
   out.write(data1);
%>

以上代码中,我们设定从PageContext域获取Request域的name数据,并且data和data1都正确输出,其中两种输出方式,第一种为指定从Requset域中读取键为name的数据,而第二种为自动在四大域中寻找键为name的数据。

JSP标签(Action)

带参数的跳转标签:

<jsp:forward page="/xxx(servlet)">
<jsp:param value="zhangsan" name="name"/>
</jsp:forward>

包含标签(动态包含):

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

还有很多JSP标签,请私下自行研究


本人水平有限,如有错误请指正,我会及时修改


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值