http://127.0.0.1:8080/jsp-examples/num/numguess.jsp

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;
}
}

<%@ 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="num.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>

兄弟是做PHP出身,2年前也做过点JSP,有个JSP的项目,所以必须温习一下
环境已经好了,代码也可以可以执行了

有两点不懂请高手指教

1:静态页面部分的表单提交的值无论是GET还是POST,服务器端程序要接收一下在做处理。
php里的是$_REQUEST或$_POST或$_GET等等
jsp中getAttribute和getSession记得也可以接收。
但这个表单提交的<input type=text name=guess>在numguess.jsp里是怎么接收的。

2:看了半天感觉是
<jsp setProperty name="numguess" property="*"/>
public void setGuess(String guess){}配合起来
有些回忆,好像这个可以接收什么似的String guess必须和表单的<input type=text name=guess> name值一致

但是类里面的方法 除非是构造方法(在类实例化时会自己执行)否则自己不会执行的。找来半天,发现numguess.jsp里的构造方式里面只是调用reset了一下。

那么
public void setGuess(String guess)
{
。。。。。
}

这个方法 没人调用怎么执行的呀

感谢各位高手 不吝赐教"/>

Tomcat自带JSP实例,请教

发布时间:2024-05-09 13:40 发布:上海旅游网

问题描述:

Tomcat自带JSP实例
http://127.0.0.1:8080/jsp-examples/num/numguess.jsp

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;
}
}

<%@ 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="num.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>

兄弟是做PHP出身,2年前也做过点JSP,有个JSP的项目,所以必须温习一下
环境已经好了,代码也可以可以执行了

有两点不懂请高手指教

1:静态页面部分的表单提交的值无论是GET还是POST,服务器端程序要接收一下在做处理。
php里的是$_REQUEST或$_POST或$_GET等等
jsp中getAttribute和getSession记得也可以接收。
但这个表单提交的<input type=text name=guess>在numguess.jsp里是怎么接收的。

2:看了半天感觉是
<jsp setProperty name="numguess" property="*"/>
public void setGuess(String guess){}配合起来
有些回忆,好像这个可以接收什么似的String guess必须和表单的<input type=text name=guess> name值一致

但是类里面的方法 除非是构造方法(在类实例化时会自己执行)否则自己不会执行的。找来半天,发现numguess.jsp里的构造方式里面只是调用reset了一下。

那么
public void setGuess(String guess)
{
。。。。。
}

这个方法 没人调用怎么执行的呀

感谢各位高手 不吝赐教

问题解答:

使用这句:<jsp:setProperty name="numguess" property="*"/>
如果property="guess",就是说调用setGuess()方法;property="*",就是调用一切的set方法(当然,是与form表单各项名称相同的方法)

这属于JavaBean的知识,可参考这两个视频教程(魔乐在线):
http://www.mldn.cn/articleview/2007-1-7/article_view_218.htm
http://www.mldn.cn/articleview/2007-1-7/article_view_219.htm

自己下载看看就清楚了!

<jsp setProperty name="numguess" property="*"/>
通知服务器给名字为numguess的bean赋值,通过它的set方法

哈哈,我做了一年的JSP,现在转PHP了。
表单上的每一个元素,对应JavaBean里面的一个变量,而且这个变量,应该有2个方法get和set,如name,getName()和setName(String name),这个样子的类被称为Bean。Bean类不用实例化(应该说JSP巳经帮我们实例化了)

其实这种接收参数的方式一般和框架配合使用,如Strust(现是2.0版本)。

如果是纯JSP的话用string name=Request.getParameter("name");(我喜欢用这种,省去建Bean了)

热点新闻