什么是JSP + JavaBean两层模式?JSP的三层模式是?两者的区别?

作者&投稿:拔映 (若有异议请与网页底部的电邮联系)
两层模式:
利用javabean把原jsp页面上复杂的逻辑抽象成一个javabean,封装这些复杂的业务逻辑,在jsp页面上只需要简单的调用这个实现业务逻辑的组件,不仅在其他页面可以重复利用,而且更好的实现了封装,便于开发人员的合作。
三层模式:
MVC(Model View Controller)模型-视图-控制器
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
Java开发Web Application有几种符合MVC设计模式的开发方式。
1:Jsp+Servlet+JavaBean(EJB)
2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)
3:TDK(Turbine,Velocity...)
4:Xsp 5:Jsp+Struts+JavaBean(EJB)

两者的区别嘛,对于更复杂更庞大的网站的开发用三层的结构比较合理,比如涉及大量的数据库操作的网站。两层的结构就是编起来比较轻松容易,不过能处理的规模有限。不过现在有个不好的风气就是编什么都用三层结构,如果网站没那么复杂用三层编就是浪费资源了。

JSP和JAVABEAN问题~

1.关于setUserID报错The method setUserID(String) in the type OrderBean is not applicable for the arguments (Object)
其实很简单,你可以看一下HttpSession的API文档,getValue方法返回的是哟个Object类型,你可以把返回值进行强制类型转换,如:getValue((String)session.getValue("memberID")),这样比较安全,如果单纯使用session.getValue("memberID").toString()有可能会导致NullPointerException.

2.关于setOrderprice报错The method setOrderprice(String) in the type OrderBean is not applicable for the arguments (float)
其实很简单,说明setOrderprice方法的参数应该是String类型,你可以使用orderBean.setOrderprice(Float.toString(Float.parseFloat(str==null?"0":str)));
就可以了

修改后的代码:




<%
/*禁止使用浏览器Cache,网页立即失效*/
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires",0);
%>




填写订单



<%
if ("send".equals(request.getParameter("send")))
{
orderBean.setUserID((String)session.getValue("memberID"));
String str=request.getParameter("receivername");
orderBean.setReceiverName(str);
str=request.getParameter("orderprice");
orderBean.setOrderprice(Float.toString(Float.parseFloat(str)));
str=request.getParameter("address");
orderBean.setReceiverAddress(str);
str=request.getParameter("postcode");
orderBean.setReceiverZip(str);
str=request.getParameter("bookinfo");
orderBean.setBookinfo(str);

int orderID=Integer.parseInt(orderBean.getOrderID());


if (orderID>0)
{ /*清空Cookie(购物车)信息*/
Cookie[] cookies=request.getCookies();
for (int i=0;i<cookies.length;i++)
{ String isbn=cookies[i].getName();
if (isbn.startsWith("ISBN")&&isbn.length()==8)
{ Cookie c=new Cookie(isbn,"0");
c.setMaxAge(0);//设定Cookie立即失效
response.addCookie(c);
}
}
%>
订购成功!

订单号:
返回首页
<%
}
else
{
out.print("订购失败
");

}
}

else
{ float price=0;
String bookInfoStr="";

%>



ISBN
书名
单价
数量
价格

<% /*读取购物车信息*/
Cookie[] cookies=request.getCookies();
for (int i=0;i<cookies.length;i++)
{ String isbn=cookies[i].getName();
String num=cookies[i].getValue();
if (isbn.startsWith("ISBN")&&isbn.length()==8)
{
bookinfo.setBookISBN(isbn.substring(4,8));
Float bookPrice = new Float(bookinfo.getPrice());
%>


">


" name="num" readonly>



<%
price += bookPrice.floatValue()*java.lang.Integer.parseInt(num);
bookInfoStr += bookinfo.getBookISBN()+"="+num+";";

}

}
%>








修改图书订单





如以上信息无误,请填写以下信息并按提交按钮提交订单,完成网上订书:


收书人姓名





订单总金额

" readonly>



发送地址





邮编





备注









">




<%
}
%>

JavaBean就是利用Java语言编写的组件。任何可以用Java代码创造的对象都可以用JavaBean进行封装,例如其功能、处理、值和数据库访问。并且其他的开发者可以通过内部的JSP页面、Servlet、其他的JavaBean、applet程序或者应用来使用这些对象。
JavaBean组件本质上就是一个类。