A. jsp編程中<JSP:useBean>的使用
不用配置web.xml文件的,你的程序只用到Bean,沒有servlet。 N那個放CLASS文件的文件夾應該是classes,不確定是否是這個原因,試試先吧。
B. jsp里usebean的問題 跪求高手解答!!!
<jsp:useBean id="testbean" class="test.SimpleBean" scope="page" />
這樣呢?
C. jsp購物車代碼
//shopping.html
<html>
<head><title>shopping stor</title></head>
<body>
<form action="carts.jsp" target="post">
<br>
please select the item that you want to buy
<br>
<select name="item">
<option>book:old man and the sea
<option>x-box game machine
<option>mp3 player
<option>cce
<option>book:jsp programming
<option>cd "the endless love"
<option>dvd "gone with the wind"
</select>
<br>
<input type="submit" name="submit" value="add">
<input type="submit" name="submit" value="remove">
</form>
</body>
</html>
------------------------------------------------------------------
//carts.jsp
<%@page contentType="text/html;charset=ISO8859_1" %>
<html>
<jsp:useBean id="cart" scope="session" class="test.DummyCart"/>
<jsp:setProperty name="cart" property="*"/>
<%
cart.processRequest();
%>
<br>
<ol>
you have chosen these items:
<%
String []items=cart.getItems();
for(int i=0;i<items.length;i++)
{
%>
<li><%=items[i] %></li>
<%
}
%>
</ol>
<hr>
<%@include file="shopping.htm" %>
</html>
---------------------------------------------------------------------//DummyCart.java
package test;
import javax.servlet.http.*;
import java.util.Vector;
import java.util.Enumeration;
public class DummyCart
{
Vector v = new Vector();
String submit=null;
String item= null;
private void addItem(String name)
{
v.addElement(name);
}
private void removeItem(String name)
{
v.removeElement(name);
}
public void setItem(String s)
{
item=s;
}
public void setSubmit(String s)
{
submit=s;
}
public String[] getItems()
{
String []s=new String[v.size()];
v.Into(s);
return s;
}
public void processRequest()
{
if(submit==null)
addItem(item);
if(submit.equals("add"))
addItem(item);
else if (submit.equals("remove"))
removeItem(item);
reset();
}
private void reset()
{
submit=null;
item=null;
}
}
----------------------------------------------------------------------
上面是一個簡單的例子,功能都能實現,對網頁效果要求更漂亮些的可做一些修改。
D. jsp:useBean 是什麼意思呢
簡單地說,就是先寫一個Bean(也就是特殊一點的Java類)並編譯。而後在某個jsp頁面中需要用到這個類時,就用<jsp:useBean>...</jsp:useBean>這個動作來使用之前寫好的Bean。所以這個Bean也可以稱為java里的組件。
<jsp:useBean id="mdb" class="ckstudio.db.faq" scope="page"/>
這一句里,class屬性表示要使用哪個類(即Bean),這里是ckstudio.db.faq,而id屬性表示所生成的實例名稱,這里是mdb,scope屬性表示該實例的生存期,這里是page,即在同一個會話期中有效。
使用javaBean一定程度上可以將java處理代碼從jsp頁面中分離。
<jsp:usebean>用於定位或示例一個javabeans組件。<jsp:usebean>首先會試圖定位一個bean實例,如果這個bean不存在,那麼<jsp:usebean>就會從一個class或模版中進行示例。
例子 :
<jsp:usebean id="cart" scope="session" class="session.carts" />
<jsp:setproperty name="cart" property="*" />
<jsp:usebean id="checking" scope="session" class="bank.checking" >
<jsp:setproperty name="checking" property="balance" value="0.0" />
</jsp:usebean>
==============================================
問題補充:請問<jsp:setProperty...>是做什麼用呢
==============================================
jsp:setProperty動作有下面四個屬性: 屬性 說明
name name屬性是必需的。它表示要設置屬性的是哪個Bean。
property property屬性是必需的。它表示要設置哪個屬性。有一個特殊用法:如果property的值是「*」,表示所有名字和Bean屬性名字匹配的請求參數都將被傳遞給相應的屬性set方法。
value value屬性是可選的。該屬性用來指定Bean屬性的值。字元串數據會在目標類中通過標準的valueOf方法自動轉換成數字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如「true」)通過Boolean.valueOf轉換,int和Integer類型的屬性值(比如「42」)通過Integer.valueOf轉換。
value和param不能同時使用,但可以使用其中任意一個。
param param是可選的。它指定用哪個請求參數作為Bean屬性的值。如果當前請求沒有參數,則什麼事情也不做,系統不會把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認屬性值,只有當請求參數明確指定了新值時才修改默認屬性值。
E. <jsp:useBean>的例子
<jsp:useBean id=cart scope=session class=session.Carts />
<jsp:setProperty name=cart property=* />
<jsp:useBean id=checking scope=session class=bank.Checking >
<jsp:setProperty name=checking property=balance value=0.0 />
</jsp:useBean>
F. 跪求答案 <jsp:usebean>問題
usebeantest.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<! HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'userbeantest.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page.
<br>
<jsp:useBean id="mybean" scope="page" class="bookshop.run.Login" />
<jsp:setProperty property="userName" name="mybean" value="ss" />
<%
if (request.getParameter("userName") != null) {
%>
<jsp:setProperty property="*" name="mybean"/>
<%out.println(mybean.getOne()+"--" + mybean.getTwo()+"--"+mybean.getThree()+"--"+mybean.getUserName()+"--"+mybean.sayHello());
}
out.print(mybean.getUserName());
%>
<form action="usebeantest.jsp">
<input type="text" name="userName" />
<br><input type="text" name="one" />
<br><input type="text" name="two" />
<br><input type="text" name="three" />
<br><input type="submit" value="s" />
</form>
</body>
</html>
Login.java
package bookshop.run;
public class Login {
private String userName;
private String one;
private String two;
private String three;
public String getOne() {
return one;
}
public void setOne(String one) {
this.one = one;
}
public String getThree() {
return three;
}
public void setThree(String three) {
this.three = three;
}
public String getTwo() {
return two;
}
public void setTwo(String two) {
this.two = two;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String sayHello() {
return "Hello" + userName;
}
}
G. jsp中usebean問題
Connect.jsp
這個文件中的ActionMessage這里強制類型轉換出錯了,類型不匹配
該錯誤是指 JSP 中給定的回 useBean 標簽的 class 屬性的值無效(不是 Bean 的屬性值答)。 可見錯誤可能的原因包括: 1. 在編譯 JSP 時(不是運行時),指定的 Bean 類沒找到 2. Bean 雖然找到了,但是它不是 public 的,或者找到的 class 文件是 interface 或抽象類 3. Bean 類中沒有 public 的默認構建函數第二點很明顯,不用多解釋,最經常發生的情況是 Bean 類忘了聲明為 public 。第三點中需要注意的是,如果你的 Bean 類沒有提供任何構造函數,將自動生成一個默認構建函數,這沒有問題。但是,如果你有構造函數,則不會自動生成該默認構造函數。
H. <jsp:useBean>標簽用法,簡單說下
呵呵,其實你可以不用 jsp:useBean 這個的
jsp中你先導入此類
<%@ page import="" %>
然後在<% %>中使用這個就行了
比如
<%
FreeMoneyService fms = new FreeMoneyService(); //(假設是類)
FreeMoney fm =fms.getFreeByUID("");
%>
一般是在action(控制層)中用setAttribute方法,在view(頁面展示層)中用
<jsp:useBean id="freeService" class="order.util.FreeMoneyService">
然後直接將這個bean展示出來
<%= bean.getXXX() %>或者 "${ bean.XXX }"都可以
補充:
呵呵,你用的是jsp的modle1的開發方式,但是,這不是很好的方式,用mvc的開發模式時,control層用你寫的那個類調用後的返回結果作為bean裡面,給jsp中提供bean,那頁面就可以直接用el表達式來用就行了,就很方便了,連<jsp:useBean ...> 都不用寫的,就${}這個取值就OK了,很方便的
而你現在是在jsp裡面做了control層的部分業務,所以,就沒有所謂的「為了讓頁面少寫代碼」!
如果你非要用你的開發模式,那麼,只能像我說的那樣,沒有什麼別的標簽!
再一次補充:
咱們用bean目的就是為了讓它用於顯示而已!就是從控制層傳到顯示層用來顯示用的
你要想簡單,就用el表達式吧,他可以不用
<jsp:usebean>的標簽,更方便的
如果你要是非要用<jsp:usebean>,沒有什麼標簽比el表達式更方便的啦!!!
如果你非要拿bean為了得到的通過這個bean再次取得操作結果,那麼,要麼用ajax,或者是<%%>來獲取,沒有標簽了! ;-)
I. 如何使用Jsp:useBean
jsp:useBean動作用來裝載一個將在JSP頁面中使用的JavaBean。這個功能非常有用,因為它使得我內們既可以發揮容Java組件重用的優勢,同時也避免了損失JSP區別於Servlet的方便性。jsp:useBean動作最簡單的語法為:
<jsp:useBean id="name" class="package.class" />
這行代碼的含義是:「創建一個由class屬性指定的類的實例,然後把它綁定到其名字由id屬性給出的變數上」。不過,就象我們接下來會看到的,定義一個scope屬性可以讓Bean關聯到更多的頁面。此時,jsp:useBean動作只有在不存在同樣id和scope的Bean時才創建新的對象實例,同時,獲得現有Bean的引用就變得很有必要。
J. jsp:useBean
「<jsp:useBean />」標簽表示使用Java類的標簽。例如,你如果在Jsp頁面中使用文件外的Java類(稱為JavaBean),你必須得內先導入相關的包容(使用<@page import="包.類路徑">),然後在Jsp頁面加入「<%%>」或「<%!%>」進行實例後,才能使用。若使用了「<jsp:useBean />」標簽,就將前面兩步驟綜合起來,顯得更為簡單。另外搭配「<jsp:setProperty />」與「<jsp:getProperty />」標簽來使用類,就更為方便。