Jsp技术
1. Jsp 概述
-
Jsp:Java Server Page
-
Jsp 程序是在传统的HTML文档中插入Java程序段或Jsp标签而形成。(*.jsp)
-
Jsp 是一种实现静态和动态混合编码的技术。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<body>
<%
Date d=new Date();
int h=d.getHours();
if(h>12) out.print("下午好");
else out.print("上午好");
%>
</body>
<body>
<% for(int i=0; i<5; i++) { %>
<!-- Jsp表达式 -->
<div style="font-size:<%=20+i%>px">测试JSP</div>
<% } %>
</body>
* Jsp 执行过程
Jsp页面中的HTML标记(静态部分)交给客户端浏览器直接显示。
服务器端执行<%和%>之间的Java程序(动态部分),并把执行结果交给客户端的浏览器显示。
服务器端还要负责处理相关的Jsp标记,并将有关的处理结果发送到客户的浏览器。
2. Jsp 脚本元素
2.1 HTML注释
** ** 客户端可见
2.2 隐藏的注释
<%-- 注释语句 --%> 客户端不可见
<%-- 张三编写 日期: 2016.3 --%>
<script>
function clickme(){
alert("你敢点我!"); // js 注释
}
</script>
<!-- 欢迎页面 -->
<p onclick="clickme()" style="cursor: pointer">点击我</p>
2.3 输出表达式
<%= 表达式 %>
<% String s="abcde"; %>
字符串s= <%=s%>,长度= <%= s.length()%>
2.4 全局变量声明
<%! 变量声明; [声明; ] ... %>
<body>
<% i++; %>
<p>您是第<%=i%>个访问本站的客户</p>
<%! int i=0; %>
</body>
2.5 方法声明
<%! 方法代码 %>
<body>
<%! int add(int a,int b) {
return a+b;
}
%>
1+2=<%= add(1,2) %>
</body>
2.6 类声明
<%! 类代码 %>
<body>
<%! class GF {
String XM;
int AGE;
GF(String xm, int a) { XM=xm; AGE=a; }
String getXM() { return XM; }
}
%>
<%GF a=new GF("小明",20);%>
<%=a.getXM() %>
</body>
3. Jsp动作组件
-
< jsp:include>:在页面中包含一个文件。
-
< jsp:forward>:把请求转发到另一个新的页面。
-
< jsp:param>:在动作组件中引入参数信息。
-
< jsp:useBean>:寻找或者实例化一个JavaBean。 【JavaBean中使用】
-
< jsp:setProperty>:设置JavaBean的属性。【JavaBean中使用】
-
< jsp:getProperty>:输出某个JavaBean的属性。【JavaBean中使用】
3.1 jsp:include
语法格式:
<jsp:include page="relativeURL"/>
或
<jsp:include page="relativeURL">
<jsp:param name="参数1" value="参数1值"/>
…
<jsp:param name="参数n" value="参数n值"/>
</jsp:include>
3.2 < jsp:forward>
语法格式:
< jsp:forward page="relativeURL"/>
或
< jsp:forward page="relativeURL">
<jsp:param name=“参数1” value=“参数1值”/>
…
<jsp:param name=“参数n” value=“参数n值”/>
</jsp:include>
3.3 < jsp:param>
- 用于传递参数信息,必须配合< jsp:include>或< jsp:forward>动作组件一起使用。
语法格式:
<jsp:param name=“参数” value=“参数值”/>
4. Jsp内置对象
4.1 request对象
-
request对象中封装了客户端发送过来的所有的请求数据(包括请求头信息,请求方式,客户端ip地址以及请求参数等)。
-
request对象的作用域为一次请求。
4.2 response对象
- response对象代表服务器对客户端请求的响应。
基本用法:
void setHeader(String name, String value)
void sendRedirect(String location)
4.2.1 response.setHeader()方法
- 用法1:设置页面自动刷新
response.setHeader("refresh", "秒数");
- 用法2:设置定时跳转页面
response.setHeader("refresh", "秒数 **;** URL=页面名称") ;
4.2.2 response.sendRedirect()方法
- 用法1:请求重定向到新页面(页面跳转)
response.sendRedirect("http://www.wust.edu.cn");
- 用法2:跳转时传递数据
response.sendRedirect("edit.jsp?id=1");
4.2.3 redirect和forward方式区别
jsp:forward | response.sendRedirect****() |
---|---|
效率高,速度快 | 效率低,速度慢 |
地址栏不改变跳转,服务器端跳转,服务器之间内部转 | 地址栏改变跳转,客户端跳转(其中地址可以是任意的) |
使用forward时,相同的request,依然能保留在下一个页面 | 客户端跳转,不同的request |
传递参数: <jsp:param name=" " value=" " /> | URL传递参数:response.sendRedirect("test.jsp?id=1234") |
无条件立刻跳转,之后的代码不再被执行 | 所有代码执行完毕之后再跳转 |
地址中的"/"代表网站地址,如: http://localhost:8080/Test | 地址中的"/"代表服务器地址: http://localhost:8080/ |
4.3 session对象
-
session代表服务器与客户端所建立的会话。
从一个客户端打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
-
当一个客户首次访问服务器上页面时,服务器将产生一个session对象,同时分配一个String类型的id号。
-
session可以实现在一个会话期间的多页面间的数据共享/传递。
4.3.1 session基本用法
-
session.setAtrribute(String name, Object value)
用value来初始化session对象某个属性(name指定)的值;
如果指定的属性不存在,则新建一个;如果已存在,则更改name属性的值。
-
session.getAtrribute(String name)
获得由name指定名称的session对象属性的值;
方法返回Object对象,因此,对返回的对象要用强制转换把得到的对象转换为此对象原来的类型;
如果属性不存在,返回空值。
4.4 application对象
-
Web服务器一旦启动,就会自动创建application对象,并一直保持,直到服务器关闭。
-
application对象负责提供应用程序在服务器中运行时的一些全局信息,客户端使用的application对象都是一样的。
-
在此期间,在任何地方对application对象相关属性的操作,都将影响到其他用户对此的访问。
-
application对象可以实现用户间数据的共享/传递。
4.4.1 application基本用法
-
application.setAttribute(String name, Object value)
用value来初始化application对象某个属性(name指定)的值;
如果指定的属性不存在,则新建一个;如果已存在,则更改name属性的值。
-
application.getAttribute(String name)
获得由name指定名称的application对象属性的值;
方法返回Object对象,因此,对返回的对象要用强制转换把得到的对象转换为此对象原来的类型;
如果属性不存在,返回空值。
4.5 out对象
-
out对象用来向客户端发送数据(文本级),其内容将是浏览器需要显示的内容。
-
常用方法:pirnt()