jsp技术

Jsp技术是将Java代码嵌入到HTML网页代码中,再由Jsp引擎将这些代码转换成Servlet代码,从而解决了Servlet输出网页需要大量的println代码的不足。

3.1 JSP概念

q Java 服务器页面 (Java Server Page JSP) 以扩展名 . jsp 保存
q 有效地控制动态内容生成
q Java Server Page 里面使用 Java 编程语言和类库
q HTML 用于表示页面,而 Java 代码用于访问动态内容
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
	<head>
		<title>JSP测试页</title>
	</head>
	<body>
		<% 
  			java.util.Date now = new java.util.Date();
 			out.println("当前时间是:"+now);
		%>
		<h1>你好,这就是一个JSP页面</h1>
	</body>
</html>
3.2 JSP执行过程


q 转换和编译

3.3JSP优点

q 将内容与表示分离

4. JSP页面元素





<%@ page contentType="text/html;charset=UTF-8" %>
<HTML>
  <BODY>
  <%
  for ( int i=0; i<2; i++ ) 
  {
  %>
  你好<br>
  <%  
  }
  %>
  </BODY>
</HTML>
<%@ page contentType="text/html;charset=UTF-8" %>
<HTML>
  <BODY>
  <%
   for ( int i=0; i<2; i++ ) 
   {
       out.print("你好<br>");
   }
  %>
  </BODY>
</HTML>


4.1JSP脚本元素

JSP 脚本元素包括:

4.1.1声明<%! %>

q 变量的声明
q 方法的声明

    <%!  %>中声明的变量、方法、类,在整个jsp文件内都有效,是全局的

q JSP 语法格式如下:

<%!inti = 0; %>

<%!inta, b, c; %>

<%!Date date;%>

计数器 程序:

<%@ page contentType="text/html;charset=GBK" %>
<HTML>
	<BODY >
 		<%! int i=0; %>   
  		<% i++; %>
		<P>您是第 <%=i%>个访问本站的客户。
	</BODY>
</HTML> 

注意观察与前面计数器程序的异同

<%@ page contentType="text/html;charset=UTF-8" %>
<HTML>
	<BODY >
 		<% int i=0; %>     
  		<% i++; %>
		<P>您是第 <%=i%>个访问本站的客户。
	</BODY>
</HTML> 


<%@ page contentType="text/html;charset=UTF-8" %>
<HTML>
	<BODY>
  	<%!
	         long continueSum(int n)
          	        {   int sum=0;
            	 for(int i=1;i<=n;i++)
             	      sum=sum+i;
           	            return sum;
          	        }
   	%>
	<P>1到100的连续和:<BR>
  	<%  long sum;
         	        sum=continueSum(100);
     	        out.print(sum);
  	%>
	</BODY>
</HTML>

4 .1.2 JAVA 表达式

q 用于在页面上输出信息,语法格式如下

<%=expression %> <%=表达式%>

q 例如

  <%  a=12;

            b=a;

            c=a+b;   %>

  a=<%=a %><br>

  b=<%=b %><br>

  c=<%=c %><br>

<%@page contentType="text/html;charset=UTF-8"%>

<HTML>

  <BODY>

         <p> Sin(0.9)除以3等于

                           <%=Math.sin(0.90)/3%>

         <p>3的平方是:<%=Math.pow(3,2)%>

         <p>12345679乘72等于

                           <%=12345679*72%>

          <p> 5的平方根等于<%=Math.sqrt(5)%>

            <p>99大于100吗?回答:<%=99>100%>

  </BODY>

</HTML>

4.2JSP指令

q JSP 指令包括:

4.2.1page指令

page 指令用于设置 JSP 页面的属性

<%@ page language = "java" import ="java.util.*" 
 buffer = "8kb" errorPage="error.jsp" isErrorPage="false"%>

<html>
    <head>
        <title> 测试 page 指令</title>
    </head>
    <body>
        <h1> 这是一个测试页面</h1>
    </body>
</html>

4 .2.2include指

include 指令用于在运行时将 HTML 文件或 JSP 页面嵌入到另一个 JSP 页面
include 指令语法

   <%@include file = "文件名"%>

<%@ page contentType="text/html;charset=UTF-8" %>
<%@include file="head.jsp"%>
<html>
<head>
<title>include 指令</title>
</head>
<body>
<h4 align="center">你好,欢迎您!</h4>
</body>
</html>
4 .2.3t aglib 指令

taglib 指令可以让 Jsp 页面使用标签
taglib 指令的作用是在 Jsp 页面中,将标签库描述符文件引入到该页面中,并设置前缀,利用标签的前缀去使用标签库表述文件中的标签
语法

    <%@ taglib uri = "标签库表述符文件"prefix = "前缀名"%>

<html>
    <body>

     <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> 

    </body>
</html>

JSP 页面在根目录中搜索mytaglib签库描述符文件,

mytags前缀将mytaglib中的标签嵌入JSP页面

<c:outvalue="${param.name}" default="!"/>

<c:setvar="username"value="jack" scope="session"/>

<c:iftest="${stu.age<18}"var="young">对不起</c:if>

<c:choose>

  <c:whentest="${c.coloreq'red'}">颜色:<c:outvalue="${c.color}"/></c:when>

  <c:otherwise>颜色:<c:out value="${c.color}"/></c:otherwise>

</c:choose>

<c:forEachvar="user"items="${users}">

    <c:out value="${user.name}"/>

    <c:out value="${user.pwd}"/>

</c:forEach>

<c:redirecturl="${test}"/>

<c:forTokens……>

……..

JSP动作

1 JavaBean

JavaBean 是可重用组件

1.1 JavaBean的构成

getter setter 方法用于访问 JavaBean 的属性

package a;

public class Person 
{	
private String name; 	
public String getName() 
{
	return name;
}
public void setName(String myname) 
{
	name = myname;
}
}

1.2 JSP 使用 JavaBean 

Scriptlet 调用 JavaBean (举例)

动作调用 JavaBean
JavaBean 嵌入 JSP 页面
设置和获取 JavaBean 的属性
标准动作中的属性区分大小写
JSP 中的标准动作使用 < jsp > 作为前缀

2.1 useBean动作

...
<head>
<jsp:useBean id="p" class="Person" scope="page"/>
</head>
...

创建引用并嵌入现有的 Bean

id 属性创建对class属性中所述类的引用

2.2 setProperty / getProperty 动作

2.3 useBean动作范围

范围指定 JavaBean JSP 页面中的可用性。各种范围选项如下:

2.4 forward动作


2.5 include动作


使用 include 动作和 param 元素方法

隐式对象

JSP 隐式对象是 Web 容器加载的一组类
无需用 "new" 去获取实例,而是可以直接在 JSP 页面使用的对象
隐式对象的名称是 JSP 的保留字
JSP 使用 Java 定义的隐式对象来访问网页的动态内容

内置对象

代表内容

范围

request

客户端的请求信息被封装在该对象中

request

response

对请求的应答

page

pageContext

JSP页面内所有的对象及名字空间的访问,可以取输出流、sessionrequestresponse、属性、页面跳转、包含文件

page

session

客户端与服务器的一次会话,从客户连到服务器的一个Web Application开始,

直到客户端与服务器断开连接为止

session

application

实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭

application

out

向输出流写入内容的对象

page

config

JSP ServletConfig

page

page

实现处理本页当前请求的类的实例

page

2输入/输出对象

控制页面的输入和输出
访问与所有请求和响应有关的数据
输入和输出对象包括 request response out
2.1 request 对象
表示客户端对网页的请求
实现 javax.servlet.http.HttpServletRequest 接口
使用 HTTP 协议处理客户端的请求

request 对象常用方法
StringgetParameter(String name)

   根据页面表单组件名称获取请求页面提交数据(如文本框、密码框、单选框、下拉框等)

String[]getParameterValues (String name)

   获取页面请求中一个表单组件对应多个值时的用户的请求数据(如复选框)

voidsetAttribute(String name, Object value)
ObjectgetAttribute(String name)
使用 request 对象进行 JSP 编程

使用request对象要注意避免使用空对象,否则出现NullPointerException异常

<%!
   public String formatStr(String str){
     return str==null?"":str;
   }
%>
<%
String name = formatStr(request.getParameter("name"));
String pwd = formatStr(request.getParameter("pwd"));
String confirm_pwd 
= formatStr(request.getParameter("confirm_pwd"));
String gender = formatStr(request.getParameter("gender"));
String xueli = formatStr(request.getParameter("xueli"));
String[] channels = request.getParameterValues("channel");
%>
前台发送数据时,在 form 中指定发送方式有两种

发送方式

显示中文接收方法

get

<%@page contentType="text/html; charset=UTF-8"%>

<%

//不用转换编码

String name = request.getParameter("userName");

out.println("name="+name);

%>

post

<%@page contentType="text/html; charset=UTF-8"%>

<%

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("userName");

out.println("name="+name);

%>

2.2 response 对象
处理  JSP 生成的响应
将响应发送给客户端
实现 javax.servlet.http.HttpServletResponse 接口
使用 HTTP 协议将响应发送给客户端

response 对象常用方法
void setContentType (String name)

   设置作为响应生成的内容的类型和字符编码

void sendRedirect (String name)

  发送一个响应给浏览器,指示其应请求另一个URL

使用 response 对象进行 JSP 编程
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>response对象</title>
</head>
<body>
<%
response.setContentType("text/html;charset=utf-8");
response.sendRedirect("response2.jsp");
%>
</body>
</html>

2.3out 对象

表示输出流
javax.servlet.jsp.JspWriter 类的实例
使用 write() print() println () 方法

使用 out 对象进行 JSP 编程
<html>
<body>
<% 
out.print("欢迎来到 JSP:隐式对象") ;
out.write("欢迎来到 JSP:隐式对象") ;
%>
…
</body>
</html>
3作用域通信对象
隐式对象的作用域包括

   pagerequestsession和  application

作用域通信对象 包括

   sessionapplication和 pageContext

3.1session 对象

Web 服务器为单个用户发送的多个请求创建会话
存储有关用户会话的所有信息
javax.servlet.http.HttpSession 接口的实例
session 对象最常用的方法有:
void setAttribute(Stringname,Object value)

以键/值的方式,将一个对象的值存放到session

Object getAttribute(String name)

根据名称去获取session中存放对象的值

<% 
session.setAttribute("name", "admin");
%> 
<% 
if(session.getAttribute("name")!=null)
{
   String name = (String)session.setAttribute("name");
}
%>
3.2application 对象

表示 JSP 页面所属的应用程序
应用程序的 JSP 页面组合起来形成一个应用程序
javax.servlet.ServletContext 接口实例
application 对象最常用的方法有:
void setAttribute (String name,Object value)

   以键/值的方式,将一个对象的值存放到application

void getAttribute (String name)

    根据名称去获取application中存放对象的值

<% 
application.setAttribute("ChartRecord", "hihi");
%> 
<% 
if(application.getAttribute("ChartRecord")!=null)
{
   String chartRecord = 
(String) application.getAttribute("ChartRecord");
}
%>
3.3 pageContext 对象

页面上下文,用于访问jsp之间的共享数据
可访问page,request,session,application范围变量
javax.servlet.jsp.PageContext 类的实例
pageContext 对象最常用的方法有:
void setAttribute (String name,Object value)

以键/值的方式,将一个对象的值存放到pageContext

void setAttribute (String name,Object value, int scope )

scope为作用域范围,取值如下:

PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.APPLICATION_SCOPE
Object getAttribute (Stringname)

根据名称去获取pageContext中存放对象的值

Object getAttribute (Stringname, int scope )

scope为作用域范围,取值如上

<%@ page pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("page","page");
//pageContext.setAttribute("page","page",PageContext.PAGE_SCOPE); //同上步
pageContext.setAttribute("request","request",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("session","session",PageContext.SESSION_SCOPE);
pageContext.setAttribute("application","application",PageContext.APPLICATION_SCOPE);

//本页接收
out.println(pageContext.getAttribute("page"));
out.println(pageContext.getAttribute("request"));
out.println(pageContext.getAttribute("request",PageContext.REQUEST_SCOPE));
out.println(pageContext.getAttribute("session"));
out.println(pageContext.getAttribute("session",PageContext.SESSION_SCOPE));
out.println(pageContext.getAttribute("application"));
out.println(pageContext.getAttribute("application",PageContext.APPLICATION_SCOPE));
//其他页能否接收?
%>

4 Servlet 对象

JSP 引擎为每个 JSP 生成一个 Servlet
Servlet 对象提供了访问 Servlet 信息的方法和变量
Servlet 对象包括
page
config
4.1 page 对象

使用 page 对象可以访问 Servlet 类的所有变量和方法
java.lang.Object 类的一个实例
<% @ page info="我的信息" 
              contentType="text/html;charset=UTF-8"%>
<html>
<body>
<%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()%>
</body>
</html>
4.2 config 对象
存储在编译 JSP 页面的过程中创建的 Servlet 的信息
javax.servlet.ServletConfig 接口的实例
提供了检索 Servlet 初始化参数的方法
String propertyFile
=(String)config.getInitParameter("PropertyFile");
config对象
获取初始化参数

5 exception 对象

exception 对象用于处理 JSP 页面中的错误
exception 对象用于访问执行 JSP 的过程中引发的异常
exception 对象是 java.lang.Throwable 类的实例
设置将 IE ,取消“显示友好 http 错误信息”
<%@ page isErrorPage="true" %>
<html>
    <head><title> 处理错误 </title></head>
    <body>
        <% if ( exception != null ) 
               {
                     out.write("\n 发生错误。\n");
               }
              else
               {
                     out.write("\n 您已访问此页面,
                                    但是没有可用的错误信息\n");
               } 
        %>
    </body>
</html>
6 错误页定义
web.xml:
<error-page>
	<error-code>500</error-code>
	<location>/error.jsp</location>
</error-page>
<error-page>
	<error-code>404</error-code>
	<location>/error.jsp</location>
</error-page>

Jsp页面:
<%@ page isErrorPage="true" %>
<%@ page errorPage="error.jsp" isErrorPage="false" %>
7 页面跳转的区别

request 对象的转发

request.getRequestDispatcher("new.jsp").forward(request,response)

动作的转发

<jsp:forwardpage="new.jsp"></jsp:forward>

response 的重定向

response.sendRedirect("new.jsp")

javascript 的跳转

<script>

window.location="new.jsp";

//window.navigate("new.jsp");

</script>

总结:

JavaBean 是可在多个应用程序中重复使用的组件
JSP 标准动作用于插入文件、 Bean 组件以及将用户转至其他网页
forward 动作用于将用户的请求转发给其他页面
include 动作用于将一个页面嵌入当前 JSP 页面
JSP 隐式对象一般分为输入 / 输出对象、作用域通信对象 、 Servlet 对象 和错误对象四类
JSP 中的隐式对象包括 page config request response out session application pageContext exception
JSP 定义的作用域包括 page request session application












































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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值