您的位置:首页 > 编程语言 > Java开发

JSP+JavaBean与JSP+Servlet+JavaBean模型

2016-05-08 19:09 483 查看
JSP+JavaBean模式,JSP负责页面显示,并且要处理一系列逻辑。JavaBean让HTML网页与Java代码分离,处理了业务逻辑,JSP页面整洁并且精简了。JSP+JavaBean的业务处理逻辑如下:

 


 

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

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

<span style="font-family:Times New Roman;font-size:18px;"> 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;
}
}</span>

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

  <span style="font-family:KaiTi_GB2312;"> </span><span style="font-family:Times New Roman;">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();
}
}
}</span>
(3)编写显示给用户的JSP页面:

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

<span style="font-family:Times New Roman;font-size:18px;"><html>
<head>
<title>保存商品信息</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<jsp:useBean id="goods" class="com.Goods"></jsp:useBean>
<jsp:setProperty name="goods" property="*"/>
<jsp:useBean id="goodsDB" class="com.GoodsDB"></jsp:useBean>
<%
goodsDB.saveGoods(goods);
%>
</body>
</html></span>

 

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

  <span style="font-family:KaiTi_GB2312;"><</span><span style="font-family:Times New Roman;">form action="service.jsp" method="post" onsubmit="return save(this);">
<table border="1" align="center" width="300">
<tr>
<td align="center" colspan="2">
<br><h1>录入商品信息</h1>
</td>
</tr>
<tr>
<td align="right">商品名称:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td align="right">价 格:</td>
<td><input type="text" name="price"></td>
</tr>
<tr>
<td align="right">商品描述:</td>
<td><textarea name="description" cols="30" rows="3"></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="提 交">
<input type="reset" value="重 置">
</td>
</tr>
</table>
</form></span>
 

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

 

 

模型层(model):

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

视图层(view):

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

控制层(controller):

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

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

<span style="font-family:Times New Roman;font-size:18px;">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();
}</span>

 

第一种开发模式通过JavaBean改变了Java代码和HTML代码混合交织的情况,但它对JavaBean的操作仍然限于JSP页面中进行,甚至部分JSP页面只用于JavaBean交互业务处理,又充当了控制业务逻辑的作用,使显示层和业务层混合到了一起,这种只适用于小型项目开发。第二种模式基于MVC理念,将任务进行细化分隔,有了层次概念。减小了耦合度,使程序能够更好的重用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javabean java jsp servlet