JSP+JavaBean与JSP+Servlet+JavaBean模型

JSP+JavaBean模式,JSP负责页面显示,并且要处理一系列逻辑。JavaBeanHTML网页与Java代码分离,处理了业务逻辑,JSP页面整洁并且精简了。JSP+JavaBean的业务处理逻辑如下:

 JSP+JavaBean与JSP+Servlet+JavaBean模型_第1张图片

 

从图中可以看出JSP页面与JavaBean页面相分离。分工明确,JSP显示,JavaBean逻辑处理,列成了层次结构。下面有一个JSP+JavaBean模式的实例程序,参考于JavaWeb开发实战的书籍源程序如下:

(1)首先创建处理业务逻辑的JavaBean用于JSP的实体调用:

  public class Goods {
private String name;	// 商品名称
private double price;	// 单价
private String description;	// 描述信息
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}


(2)然后创建数据库操作的JavaBean对象,用于操作数据写入数据库:

  

 public class GoodsDB {
public void saveGoods(Goods goods){
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 数据库连接url
String url = "jdbc:mysql://localhost:3306/db_database05";
// 获取数据库连接
Connection conn = DriverManager.getConnection(url, "root", "111");
// sql语句
String sql = "insert into tb_goods(name,price,description) values(?,?,?)";
// 创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对sql语句中参数赋值
ps.setString(1, goods.getName());
ps.setDouble(2, goods.getPrice());
ps.setString(3, goods.getDescription());
ps.executeUpdate();	// 更新操作
ps.close();	// 关闭ps
conn.close();	// 关闭conn
} catch (Exception e) {
e.printStackTrace();
}
}
}

(3)编写显示给用户的JSP页面:

 处理的service.jsp页面代码如下:

 

保存商品信息


<%
request.setCharacterEncoding("GBK");
%>



<%
goodsDB.saveGoods(goods);
%>

 


 

(4)提交信息的表单代码如下:

  

<form action="service.jsp" method="post" οnsubmit="return save(this);">

录入商品信息

商品名称:
价 格:
商品描述:

 

JSP+Servlet+JavaBean模式是一种MVC理念,模型层(model),视图层(view),控制层(controller)三部分组成,业务逻辑图如下:

 

 

模型层(model):

  模型层是应用程序的核心部分,主要由JavaBean组件构成,可以充当一种实体或者种业务逻辑,可以在应用程序中重用和扩展。

视图层(view):

  视图层是提供应用程序与用户之间进行交互的界面,在MVC模式中,这一层并不包含任何的业务逻辑,仅仅提供一种与用户交互的视图。

控制层(controller):

  控制层用于对程序中的请求进行控制,起到一种调控作用,可以通知容器选择什么样的视图或者什么样的模型,由Servlet进行充当。

  对于JSP+JavaBean模式的视图程序,我们发现JSP页面不仅承担了页面显示。并且还要处理数据库写入的业务处理逻辑。并没有严格遵循MVC思想,所以我们采用第二种模式,加入Servlet来处理数据库写入的操作,严格的任务进行分离。创建一个Servlet的代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置response编码
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
// 设置request编码
request.setCharacterEncoding("GBK");
// 获取输出流
PrintWriter out = response.getWriter();
// 获取商品信息
String name = request.getParameter("name");
String price = request.getParameter("price");
String description = request.getParameter("description");
Goods goods = new Goods();	// 实例化商品对象
// 对商品对象属性赋值
goods.setName(name);
goods.setPrice(Double.valueOf(price));
goods.setDescription(description);
// 实例化GoodsDB
GoodsDB goodsDB = new GoodsDB();
goodsDB.saveGoods(goods);	// 保存商品信息
out.print("保存商品信息成功!");
out.flush();
out.close();
}


 

第一种开发模式通过JavaBean改变了Java代码和HTML代码混合交织的情况,但它对JavaBean的操作仍然限于JSP页面中进行,甚至部分JSP页面只用于JavaBean交互业务处理,又充当了控制业务逻辑的作用,使显示层和业务层混合到了一起,这种只适用于小型项目开发。第二种模式基于MVC理念,将任务进行细化分隔,有了层次概念。减小了耦合度,使程序能够更好的重用.

你可能感兴趣的:(Java)