看了好多材料!但讲得都很少,都是一笔带过!更没有教师用方法!
我想用“request”和“session”共享Bean!
具体要写那些代码?
共享bean,其实如果你的bean使用:
<jsp:useBean id="" scope="application|session(这个就是在同一个session都公用相同的实例的说。)"
http://www-900.ibm.com/developerWorks/cn/java/ejbIntro/index6.shtml
<jsp:useBean>操作指令
<jsp:useBean>操作指令用于在JSP 页面中实例化一个JavaBean 组件这个实例化的
JavaBean 组件对象将可以在这个JSP 程序的其它地方被调用<jsp:useBean>操作指令的基
本语法形式如下所示
<jsp:useBean id="name" scope="page|request|session|application" typeSpec />
或者
<jsp:useBean id="name" scope="page|request|session|application" typeSpec />
body
</jsp:useBean>
语法参数描述
id 属性用来设定JavaBeans 的名称利用id 可以识别在同一个JSP 程序中使用
的不同的JavaBeans 组件实例
class 属性指定JSP 引擎查找JavaBeans 代码的路径一般是这个JavaBean 所对应
的Java 类名
scope 属性用于指定JavaBeans 实例对象的生命周期亦即这个JavaBean 的有效作
用范围scope 的值可能是page request session 以及application 在下面1.3 节
中我们会详细讨论这四个属性值的含义与用法
typeSpec 可能是如下的四种形式之一
class="className"
或者
class="className" type="typeName"
或者
beanName="beanName" type=" typeName"
或者
type="typeName"
当JavaBeans 组件对象被实例化以后你就可以访问它的属性来定制它我们要获得
它的属性值应当使用<jsp:getProperty>操作指令或者是在JSP 程序段中直接调用JavaBeans
对象的getXXX()方法<jsp:getProperty>操作指令的语法形式如下所示
<jsp:getProperty id="Name" property="name" />
使用这个操作指令可以获取将要用到的JavaBeans 组件实例对象的属性值实际的值
将会被放在输出语句中
要改变JavaBeans 的属性你必须使用<jsp:setProperty>操作指令或者是直接调用
JavaBeans 对象的方法<jsp:setProperty>操作指令有以下两种语法形式
<jsp:setProperty id="Name" property="*" />
或者
<jsp:setProperty id="Name" property="propertyNumber" value="string" />
前者的功能是根据已提交的表单中的数据设置这个JavaBean 中相应(JavaBeans 属性
的名称和表单对象的名称要相同)的属性值后者的功能是把这个JavaBeans 的指定的属性
设为指定的值
为了能在JSP 程序中使用JavaBeans 组件你需要特别注意JavaBeans 类程序的存放问
题:为了使应用程序服务器能找到JavaBeans 类你需要将其类文件放在Web 服务器的一个
特殊位置以JSWDK1.0.1 服务器为例JavaBeans 的类文件(编译好的class 文件)应该放在
examples\WEB-INF\jsp\beans 目录下或者是webpages\WEB-INF\jsp\beans 目录下面在resin
服务器中则是放在doc\WEB-INF\classes 目录下的至于JavaBeans 在其他服务器下的存放
路径读者可以参考下文的介绍或者相应服务器的开发文档
我的代码节选,希望可以给你点参考:
Bean文件 cardBean.java
--------------------------------------------------------
public class cardbean {
private String card_No="";
private String card_Pass="";
public String getCard_No() {
return card_No;
}
public void setCard_No(String card_No) {
this.card_No = card_No;
}
public String getCard_Pass() {
return card_Pass;
}
public void setCard_Pass(String card_Pass) {
this.card_Pass = card_Pass;
}
public int cardlogin(){ //登陆
//if ((this.card_No.equals("123")) && (this.card_Pass.equals("321"))){
setCard_Verified("true");
return 1;//返回成功标记
}
else{
this.card_No = "";
this.card_Pass = "";
return 0; //返回登陆不成功的标志
}
}
login.jsp //登陆页面
---------------------------------------
<form method="post" action="check.jsp" name="loginform" onsubmit="return true;">
<br>请输入你的卡号 : <input type=text size=12 name="card_id" maxlength=18><br>
<br>请输入你的密码 : <input type=password size=12 name="card_pass" maxlength=6><br>
<br><br>
<input type="submit" name="Submit" value="登录" >
<input type="reset" value="清除">
<input type="hidden" name= "loginpage" value = "login.jsp">
<br>
</form>
check.jsp//检测页面
----------------------------------------------
<jsp:useBean id="cardBeanId" scope="session" class="webapp.cardbean" />
<jsp:setProperty name="cardBeanId" property="*" />
<%
if (request.getParameter("card_id")!=null){
cardBeanId.setCard_No(request.getParameter("card_id"));}
if (request.getParameter("card_pass")!=null){
cardBeanId.setCard_Pass(request.getParameter("card_pass"));}
if(cardBeanId.cardlogin()==1)
{
do something;
session.setAttribute("frompage","check.jsp");//作为经过验证的标志
response.sendRedirect("success.jsp");
}
else{
response.sendRedirect("errorlogin.jsp");
}
%>
success.jsp
-------------------------------------------------
<jsp:useBean id="cardBeanId" scope="session" class="webapp.cardbean" />
<h1>登陆成功</h1>
<%
if(session.getAttribute("frompage")!="check.jsp")
{
response.sendRedirect("errorlogin.jsp");
}
else
{
out.write("<h2>你已经成功登录!!!卡号为"+cardBeanId.getCard_No()+"的用户</h2>");
out.write("卡号"+cardBeanId.getCard_No());
out.write("<br>密码"+cardBeanId.getCard_Pass());
}
%>
随便找个论坛的代码研究一下,什么问题都会明白的