linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > JSP >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·JSP语法手册
·JSP入门教程完全版
·jsp初学心得体会
·JSP连接SQL Server 2000系统配
·JavaBean入门教程
·JSP技术简介
·JAVA基础:提升JSP应用程序的七
·jsp连接sql server调用数据源方
·JSP初学者必须掌握的语法点
·由浅到深详细讲解JSP自定义标签
·在JSP中访问数据库大全
·JSP初级教程之plugin的使用
·JSP中表单数据存储的一种通用方
·Jsp+JavaBean循序渐进教程(一)
·创建JSP站点介绍
最新文章
·mootools实现搜索提示文本框修
·JAVA基础:提升JSP应用程序的七
·如何在JSP中发送一个动态图像
·由浅到深详细讲解JSP自定义标签
·JDBC 4.0规范之目标
·创建JSP站点介绍
·在JSP中访问数据库大全
·JSP连接SQL Server 2000系统配
·jsp连接sql server调用数据源方
·JSP初学者必须掌握的语法点
·JSP语法手册
·JSP初级教程之plugin的使用
·Jsp+JavaBean循序渐进教程(一)
·Jsp+JavaBean循序渐进教程(五)
·事件监听器将JavaBeans接通起来
Google
 
JSP入门教程完全版
[ 作者:  加入时间:2007-10-09 10:49:42  来自:Linux联盟收集整理 ]

第一步用<jsp:useBean>标签创建或者定位到Bean一定要用在<jsp:setProperty>之前,<jsp:useBean>首先按照你指定的名字查找Bean,如果没找到,会给你指定一个。允许在一个JSP文件中创建一个Bean,然后再另一个文件中调用,这就给了Bean一个很广泛的运行空间。

第二步在Bean里面用<jsp:setProperty>设置属性值。最简单的方法是把值定义成与表单名相配合。举个例子,如果你把表单名定义成“username”那么,你就在Bean里定义属性“username”然后用方法getUsername和setUsername。

当然也可以定义成不同的名字,只要你不认为麻烦。谁让你记忆力好呢!

Request对象 phNLinux联盟
用户输入的数据用来存放在Request对象里,用javax.servlet.HttpServletRequest来执行(你也可以用其他不同的工具来执行,但他们其实都是javax.servlet.HttpServletRequest的子集)

你也可以直接用scriptlet来直接访问Request对象。Scriptlet将在下一讲里边详细的讨论,现在你只需要知道他是用脚本语言写的一段放在<% 和%> 之间的代码就足够了。在JSP 1.0中,你必须用JavaTM程序语言作为你的脚本语言。 phNLinux联盟
你经常会用到如下方法处理Request对象:

方法 phNLinux联盟
说明 phNLinux联盟
执行结果

getRequest phNLinux联盟
Javax.servlet.jsp.PageContext phNLinux联盟
返回当前Request对象

getParameterNames phNLinux联盟
javax.servlet.ServletRequest phNLinux联盟
返回当前Request对象参数名

getParameterValues phNLinux联盟
javax.servlet.ServletRequest phNLinux联盟
返回当前Request对象参数值

phNLinux联盟
你将会发现其他方法包括ServletRequest,HttpServletRequest或者其他任何ServletRequest的子集。

JSP引擎经常在scenes之后使用Request对象,即使你没有明确地在JSP文件中调用。

从Bean中调数据到JSP页面 phNLinux联盟
一旦用户的数据被传到Bean,你就想重新得到数据,然后在JSP面页中显示出来。想达到这一步,你就得用到<jsp:getProperty>标签。传Bean名和属性名:

<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!

<jsp:useBean>, <jsp:setProperty>, 和 <jsp:getProperty>标签必须相配,举个例子:

hellouser.jsp: phNLinux联盟
<jsp:useBean id="mybean" scope="session" class="hello.NameHandler" /> phNLinux联盟
<jsp:setProperty name="mybean" property="*" /> phNLinux联盟
response.jsp: phNLinux联盟
<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!

在这个例子里,标签被放在两个文件中,但是指定的名字都是相同的,如果不同的话,那么系统会返回一个错误信息。

如何运行例子 phNLinux联盟
我用的是UNIX主机,如果你用windows,那么改相应的路径即可。

创建路径../jswdk-1.0/examples/jsp/tutorial/hellouser.

把文件background.gif, duke.waving.gif, dukebanner.html, hellousr.jsp和response.jsp文件放进去。

创建一个目录,../jswdk-1.0/examples/WEB-INF/jsp/beans/hello

把文件NameHandler.java和NameHandler.class放进去。

cd../jswdk-1.0然后startserver

打开浏览器http://计算机名:8080/examples/jsp/tutorial/hellouser/hellouser.jsp

使用脚本 phNLinux联盟
在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。 phNLinux联盟
使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。 phNLinux联盟
如何增加脚本 phNLinux联盟
首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则 phNLinux联盟
1、 在JSP页面里用Page指令定义脚本(默认值是Java,一般不需要定义) phNLinux联盟
2、 声明语法<%!……%>声明变量和方法(函数)。 phNLinux联盟
3、 表达式语法<%=……%>定义脚本语言表达式 phNLinux联盟
4、 脚本语法〈%……%>可以操作声明、表达式和其他类型合法的代码段在页脚本语言。 phNLinux联盟
5、 一定要在结尾加%>标签 phNLinux联盟
声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。 phNLinux联盟
声明<%!……%>包含了一个或多个变量和方法,结尾以分号分隔。 phNLinux联盟
例:<%! Int I=0 ; %> phNLinux联盟
<%! Int a, b ; double c ; %> phNLinux联盟
<%! Circle a = new circle(2.0) ; %> phNLinux联盟
在页面中使用变量和方法之前必须声明 phNLinux联盟
声明的范围通常是JSP页,但如果页面中使用INCLUDE指令包含其他页面,范围应变得扩展到被包含的页面。 phNLinux联盟
表达式<%=……%>可以在页面中包含任何合法的语言表达式,不用分号。 phNLinux联盟
例:<%= Math.sqrt(2) %> phNLinux联盟
<%= item[I] %> phNLinux联盟
<%= a+b+c %> phNLinux联盟
<%= new java.util.date() %> phNLinux联盟
表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。 phNLinux联盟
脚本<%……%>允许你写的任何数量的脚本语言 phNLinux联盟
例:<% String name=null ; phNLinux联盟
If (request.getParmeter("name")==null{ phNLinux联盟
%> phNLinux联盟
记住在脚本中必须使用分号结尾。 phNLinux联盟
猜数字游戏 phNLinux联盟
猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。 phNLinux联盟
代码 phNLinux联盟
显示用的主屏幕(numguess.jsp) phNLinux联盟
<!-- phNLinux联盟
Number Guess Game phNLinux联盟
Written by Jason Hunter, CTO, K&A Software phNLinux联盟
jasonh@kasoftware.com, http://www.servlets.com phNLinux联盟
Copyright 1999, K&A Software phNLinux联盟
Distributed by Sun Microsystems with permission phNLinux联盟
--> phNLinux联盟
<%@ page import = "num.NumberGuessBean" %>

<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session" /> phNLinux联盟
<jsp:setProperty name="numguess" property="*" />

<html> phNLinux联盟
<head><title>Number Guess</title></head> phNLinux联盟
<body bgcolor="white"> phNLinux联盟
<font size=4>

<% if (numguess.getSuccess() ) { %>

Congratulations! You got it. phNLinux联盟
And after just <%= numguess.getNumGuesses() %>tries.<p>

<% numguess.reset(); %> phNLinux联盟
Care to <a href="numguess.jsp">try again</a>?

<% } else if (numguess.getNumGuesses() == 0) { %>

Welcome to the Number Guess game.<p> phNLinux联盟
I'm thinking of a number between 1 and 100.<p>

<form method=get> phNLinux联盟
What's your guess? <input type=text name=guess> phNLinux联盟
<input type=submit value="Submit"> phNLinux联盟
</form>

<% } else { %> phNLinux联盟
Good guess, but nope. Try <b><%= numguess.getHint() %></b>. phNLinux联盟
You have made <%= numguess.getNumGuesses() %> guesses. phNLinux联盟
<p>I'm thinking of a number between 1 and 100. phNLinux联盟
<p><form method=get>

What's your guess? <input type=text name=guess> phNLinux联盟
<input type=submit value="Submit"> phNLinux联盟
</form> phNLinux联盟
<% } %> phNLinux联盟
</font> phNLinux联盟
</body> phNLinux联盟
</html>

操作程序(NumberGuessBean.java) phNLinux联盟
// Number Guess Game phNLinux联盟
// Written by Jason Hunter, CTO, K&A Software phNLinux联盟
// jasonh@kasoftware.com, http://www.servlets.com phNLinux联盟
// Copyright 1999, K&A Software phNLinux联盟
// Distributed by Sun Microsystems with permission

package num; phNLinux联盟
import java.util.*; phNLinux联盟
public class NumberGuessBean { phNLinux联盟
int answer; phNLinux联盟
boolean success; phNLinux联盟
String hint; phNLinux联盟
int numGuesses; phNLinux联盟
public NumberGuessBean() { phNLinux联盟
reset(); phNLinux联盟
} phNLinux联盟
public void setGuess(String guess) { phNLinux联盟
numGuesses++; phNLinux联盟
int g; phNLinux联盟
try { phNLinux联盟
g = Integer.parseInt(guess); phNLinux联盟
} phNLinux联盟
catch (NumberFormatException e) { phNLinux联盟
g = -1; phNLinux联盟
} phNLinux联盟
if (g == answer) { phNLinux联盟
success = true; phNLinux联盟
} phNLinux联盟
else if (g == -1) { phNLinux联盟
hint = "a number next time"; phNLinux联盟
} phNLinux联盟
else if (g < answer) { phNLinux联盟
hint = "higher"; phNLinux联盟
} phNLinux联盟
else if (g > answer) { phNLinux联盟
hint = "lower"; phNLinux联盟
} phNLinux联盟
} phNLinux联盟
public boolean getSuccess() { phNLinux联盟
return success; phNLinux联盟
} phNLinux联盟
public String getHint() { phNLinux联盟
return "" + hint; phNLinux联盟
} phNLinux联盟
public int getNumGuesses() { phNLinux联盟
return numGuesses; phNLinux联盟
} phNLinux联盟
public void reset() { phNLinux联盟
answer = Math.abs(new Random().nextInt() % 100) phNLinux联盟
+ 1; phNLinux联盟
success = false; phNLinux联盟
numGuesses = 0; phNLinux联盟
} phNLinux联盟
}

在JSP文件中使用脚本 phNLinux联盟
numguess.jsp是一个非常有趣儿的用脚本写的例子,你看他的结构其实是一个很大的IF……ELSE结构,但是很一个从句又都是用HTML写的,看起来象一个大的程序段。 phNLinux联盟
不过你也不一定非得象numguess.jsp那样用HTML和JSP标签一起来写脚本。在<%和%>标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者Beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写JSP还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,SUN的JSP详细说明书不规定脚本的长度。

用标签组合脚本 phNLinux联盟
使用HTML和JSP标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧: phNLinux联盟
<% } else { %> <!-- 用JSP标签的时候先关上 -->

... 这时候用JSP标签吧 ...

<% } %> <!-- 这样你应该看懂了吧?! --> phNLinux联盟
开始的时候这种做法看起来可能有一点奇怪,但它以确保你JSP文件编译的时候脚本的成功转换。

那么,脚本什么时候执行呢? phNLinux联盟
一个JSP原文件的处理分为两个阶段:一个是HTTP的编译时候,一个是请求的处理时间。

HTTP编译的时候,当用户第一次读JSP页面的时候,JSP的原代码被编译成CLASS,通常是servlet。HTML标签和JSP标签在这个时候同时被处理了,这之前用户还没有任何的请求被提交。

请求处理时间是当用户在JSP页面中提交了一个请求,这时请求由客户端被request对象传到了服务器端,JSP引擎根据用户提交的值执行编译过的JSP文件或者servlet。

当你在JSP页中使用脚本的时候,你必须知道他们什么时候被执行。声明在HTTP编译阶段就已经被处理了,其他脚本,表达式在编译JSP文件的时候也可用。表达式在HTTP编译的时候也被执行了。表达式的值被转换成了字符串被插入到JSP文件中一块儿被编译。其实在请求阶段,脚本也是可以利用的。

如何运行例子 phNLinux联盟
我现在给出的都是在UNIX风格下的路径,如果你用Windows,那么改成Windows风格路径 phNLinux联盟
1、猜数字游戏在装TOMCAT或者JSWDK的时候就已经装好了。 phNLinux联盟
2、.jsp和.html文件在../jswdk-1.0.1/examples/num中 phNLinux联盟
3、.java和.class文件在../jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中 phNLinux联盟
4、开浏览器,http://机器名/examples/jsp/num/numguess.jsp

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
分页:1 2 [3]
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息