当前位置: 首页 > 图文教程 > 网络编程 > JSP > JSP入门教程(4)

JSP
搭建Eclipse+MyEclipse开发环境
卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
一个jsp+AJAX评论系统
JSP 多个文件打包下载代码
JSP 动态树的实现
jsp 重复提交问题
J2ME/J2EE实现用户登录交互 实现代码
访问JSP文件或者Servlet文件时提示下载的解决方法
JSP EL表达式详细介绍
JSP 报表打印的一种简单解决方案
jsp 自定义标签实例
AJAX自学练习 无刷新从数据库后台取数据显示
AJAX 自学练习 请求与显示
AJAX 自学练习 无刷新提交并修改数据库数据并显示
jsp 文件上传浏览,支持ie6,ie7,ie8
JSP application(return String)用法详例
jsp form表单方法示例
JSP request(return String)用法详例
JSP forward用法分析实例代码分析
JSP JavaBean的setProperty属性

JSP入门教程(4)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 64 ::
收藏到网摘: n/a

使用脚本
在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。
使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。
如何增加脚本
首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则
1、 在JSP页面里用Page指令定义脚本(默认值是Java,一般不需要定义)
2、 声明语法<%!……%>声明变量和方法(函数)。
3、 表达式语法<%=……%>定义脚本语言表达式
4、 脚本语法〈%……%>可以操作声明、表达式和其他类型合法的代码段在页脚本语言。
5、 一定要在结尾加%>标签
声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。
声明<%!……%>包含了一个或多个变量和方法,结尾以分号分隔。
例:<%! Int I=0 ; %>
<%! Int a, b ; double c ; %>
<%! Circle a = new circle(2.0) ; %>
在页面中使用变量和方法之前必须声明
声明的范围通常是JSP页,但如果页面中使用INCLUDE指令包含其他页面,范围应变得扩展到被包含的页面。
表达式<%=……%>可以在页面中包含任何合法的语言表达式,不用分号。
例:<%= Math.sqrt(2) %>
<%= item[I] %>
<%= a+b+c %>
<%= new java.util.date() %>
表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。
脚本<%……%>允许你写的任何数量的脚本语言
例:<% String name=null ;
If (request.getParmeter("name")==null{
%>
记住在脚本中必须使用分号结尾。
猜数字游戏
猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。
代码
显示用的主屏幕(numguess.jsp)
<!--
Number Guess Game
Written by Jason Hunter, CTO, K&A Software
[email protected], http://www.servlets.com
Copyright 1999, K&A Software
Distributed by Sun Microsystems with permission
-->
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session" />
<jsp:setProperty name="numguess" property="*" />
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>
<% if (numguess.getSuccess() ) { %>
Congratulations! You got it.
And after just <%= numguess.getNumGuesses() %>tries.<p>
<% numguess.reset(); %>
Care to <a href="numguess.jsp">try again</a>?
<% } else if (numguess.getNumGuesses() == 0) { %>
Welcome to the Number Guess game.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } else { %>
Good guess, but nope. Try <b><%= numguess.getHint() %></b>.
You have made <%= numguess.getNumGuesses() %> guesses.
<p>I'm thinking of a number between 1 and 100.
<p><form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } %>
</font>
</body>
</html>
操作程序(NumberGuessBean.java)
// Number Guess Game
// Written by Jason Hunter, CTO, K&A Software
// [email protected], http://www.servlets.com
// Copyright 1999, K&A Software
// Distributed by Sun Microsystems with permission
package num;
import java.util.*;
public class NumberGuessBean {
int answer;
boolean success;
String hint;
int numGuesses;
public NumberGuessBean() {
reset();
}
public void setGuess(String guess) {
numGuesses++;
int g;
try {
g = Integer.parseInt(guess);
}
catch (NumberFormatException e) {
g = -1;
}
if (g == answer) {
success = true;
}
else if (g == -1) {
hint = "a number next time";
}
else if (g < answer) {
hint = "higher";
}
else if (g > answer) {
hint = "lower";
}
}
public boolean getSuccess() {
return success;
}
public String getHint() {
return "" + hint;
}
public int getNumGuesses() {
return numGuesses;
}
public void reset() {
answer = Math.abs(new Random().nextInt() % 100)
+ 1;
success = false;
numGuesses = 0;
}
}
在JSP文件中使用脚本
numguess.jsp是一个非常有趣儿的用脚本写的例子,你看他的结构其实是一个很大的IF……ELSE结构,但是很一个从句又都是用HTML写的,看起来象一个大的程序段。
不过你也不一定非得象numguess.jsp那样用HTML和JSP标签一起来写脚本。在<%和%>标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者Beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写JSP还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,SUN的JSP详细说明书不规定脚本的长度。
用标签组合脚本
使用HTML和JSP标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧:
<% } else { %> <!-- 用JSP标签的时候先关上 -->
... 这时候用JSP标签吧 ...
<% } %> <!-- 这样你应该看懂了吧?! -->
开始的时候这种做法看起来可能有一点奇怪,但它以确保你JSP文件编译的时候脚本的成功转换。
那么,脚本什么时候执行呢?
一个JSP原文件的处理分为两个阶段:一个是HTTP的编译时候,一个是请求的处理时间。
HTTP编译的时候,当用户第一次读JSP页面的时候,JSP的原代码被编译成CLASS,通常是servlet。HTML标签和JSP标签在这个时候同时被处理了,这之前用户还没有任何的请求被提交。
请求处理时间是当用户在JSP页面中提交了一个请求,这时请求由客户端被request对象传到了服务器端,JSP引擎根据用户提交的值执行编译过的JSP文件或者servlet。
当你在JSP页中使用脚本的时候,你必须知道他们什么时候被执行。声明在HTTP编译阶段就已经被处理了,其他脚本,表达式在编译JSP文件的时候也可用。表达式在HTTP编译的时候也被执行了。表达式的值被转换成了字符串被插入到JSP文件中一块儿被编译。其实在请求阶段,脚本也是可以利用的。
如何运行例子
我现在给出的都是在UNIX风格下的路径,如果你用Windows,那么改成Windows风格路径
1、猜数字游戏在装TOMCAT或者JSWDK的时候就已经装好了。
2、.jsp和.html文件在../jswdk-1.0.1/examples/num中
3、.java和.class文件在../jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中
4、开浏览器,http://机器名/examples/jsp/num/numguess.jsp