JSP中使用的模式——JSP+JavaBean

模式二:JSP+Servlet+JavaBean

链接地址:http://wxmimperio.coding.io/?p=189

JSP中两种模式的总结

链接地址:http://wxmimperio.coding.io/?p=207


用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变——摘自百度百科

(其实可以将javabean理解为一个类,我们用的时候调用各种里面的方法、读写属性和发送接收事件封装数据和操作从而使html的前台与jsp的后台实现部分分离,模块化强便于维护)

JSP网站开发技术标准给出了两种使用JSP的方式,这些方式都可以归结为

模式一:JSP+JavaBean

模式二:JSP+Servlet+JavaBean


已经用模式一做了两个toy program,所以做一下总结。

在JSP+JavaBean中,JSP页面独自相应请求并经处理返回,所有的数据通过Bean处理,JSP实现页面的表现,实现了表现和业务逻辑相分离,MVC设计模式(Model View Controller)

但是大量使用使用这个模式时会带来一个副作用,会导致页面里嵌入了大量的java控制代码,当要处理的业务逻辑复杂时会让页面设计变得十分困难,所以这种模式适合小型项目而不适合大型的项目。


JSP访问JavaBean的方法:

1.导入JavaBean类

  通过<%@ page import>指令导入JavaBean类,

  例如:

  1. <%@ page import="rsystem.DB" %>  

   其中rsystem是一个包,DB是一个JavaBean类

2.声明JavaBean对象。

  <jsp:useBean>标签用来声明JavaBean对象,

  例如: 

  1. <jsp:useBean id="myBean" class="rsystem.DB" scope="session"/>  

    其中id是名称,scope属性决定了JavaBean存在的范围,通常有page(默认)、requset、session、application

3.访问JavaBean属性。

  JSP提供了访问JavaBean属性的标签,如果要将JavaBean的某个属性输出到网页上,可以用<jsp:getProperty>标签。

  例如:

  1. <jsp:getProperty name="myBean" property="count"/>  

  如果要给JavaBean的某个属性赋值,可以用<jsp:setProperty>标签,

  例如:

  1. <jsp:setProperty name="myBean" property="count" value="0"/>  

实例说明:

这里写一个用户注册的小例子帮助理解这种模式,会用到JDBC编程和SQL的相关知识,这里不做相关介绍。 

(我的开发环境是Idea+Tomcat+Mysql,提前做好相应jar包的引入)

数据库脚本:

  1. create database register;  
  2. use register;  
  3.   
  4. #会员注册信息  
  5. create table user_info(  
  6.     userName varchar(20) not null,                          #用户名  
  7.     passWord varchar(20) not null,                          #用户密码  
  8.     email varchar(20)                                               #email地址  
  9. );  

1.表示注册信息的JavaBean(registerInfo.java)

  • package rsystem;  
  • /** 
  •  * 此JavaBean,表示了注册信息的数据 
  •  */  
  • public class registerInfo {  
  •     private String username,password,email;  
  •   
  •     //set和get方法  
  •     public void setUsername(String username) {  
  •         this.username = username;  
  •     }  
  •     public String getUsername() {  
  •         return username;  
  •     }  
  •     public void setPassword(String password) {  
  •         this.password = password;  
  •     }  
  •     public String getPassword() {  
  •         return password;  
  •     }  
  •     public void setEmail(String email) {  
  •         this.email = email;  
  •     }  
  •     public String getEmail() {  
  •         return email;  
  •     }  
  • }  

2.表示执行数据库操作的JavaBean(registerBD.java)

  • package rsystem;  
  •   
  • import java.sql.*;  
  • import java.util.*;  
  • /** 
  •  * 此JavaBean,表示了对数据库的操作 
  •  */  
  • public class registerBD {  
  •     private Connection con;  
  •     registerInfo rinfo;  
  •   
  •     //获取数据库连接  
  •     public registerBD() {  
  •         try {  
  •             Class.forName("com.mysql.jdbc.Driver");  
  •             String url = "jdbc:mysql://localhost:3306/register?user=root&password=root";  
  •             con = DriverManager.getConnection(url);  
  •         } catch (ClassNotFoundException e) {  
  •             e.printStackTrace();  
  •         } catch (SQLException e) {  
  •             e.printStackTrace();  
  •         }  
  •     }  
  •   
  •     //设置属性  
  •     public void setRegisterInfo(registerInfo rinfo) {  
  •         this.rinfo = rinfo;  
  •     }  
  •     public void addRegisterInfo()throws Exception {  
  •         //信息插入数据库,JDBC相关操作  
  •         try {  
  •             String sql = "insert into user_info(userName,passWord,email) values(?,?,?)";  
  •             PreparedStatement stm = con.prepareStatement(sql);  
  •             stm.setString(1,rinfo.getUsername());  
  •             stm.setString(2,rinfo.getPassword());  
  •             stm.setString(3,rinfo.getEmail());  
  •             stm.executeUpdate();  
  •             con.close();//关闭数据库连接  
  •         } catch (Exception e) {  
  •             e.printStackTrace();  
  •         }  
  •     }  
  •   
  •     //获取用户信息,返回结果到JSP页面  
  •     public Collection getRegisterInfo()throws Exception {  
  •         //信息从数据库查询,JDBC相关操作  
  •         Collection ret = new ArrayList();  
  •         try {  
  •             Statement stm = con.createStatement();  
  •             ResultSet result = stm.executeQuery("select count(*) from user_info");  
  •             int register_count = 0;  
  •             if(result.next()) {  
  •                 register_count = result.getInt(1);  
  •                 result.close();  
  •             }  
  •             if(register_count > 0) {  
  •                 result = stm.executeQuery("select * from user_info");  
  •                 while (result.next()) {  
  •                     String username = result.getString("username");  
  •                     String password = result.getString("password");  
  •                     String email = result.getString("email");  
  •                     registerInfo rinfo = new registerInfo();  
  •                     rinfo.setUsername(username);  
  •                     rinfo.setPassword(password);  
  •                     rinfo.setEmail(email);  
  •                     ret.add(rinfo);  
  •                 }  
  •                 result.close();  
  •                 stm.close();  
  •             }  
  •             con.close();  
  •         } catch (Exception e) {  
  •             e.printStackTrace();  
  •             throw e;  
  •         }  
  •         return ret;  
  •     }  
  • }  

3.填写用户信息的html(registerPage.html) 

  • <!DOCTYPE html>  
  • <html>  
  • <head lang="en">  
  •     <meta charset="gbk">  
  •     <title></title>  
  • </head>  
  • <body>  
  • <td><table align="center" border="1" cellpadding="0" cellspacing="0">  
  •     <form action="registerOk.jsp">  
  •         <tr>  
  •             <td>用户名:</td>  
  •             <td><input type="text" name="username" size="25"></td>  
  •         </tr>  
  •         <tr>  
  •             <td>密码:</td>  
  •             <td><input type="password" name="password" size="25"></td>  
  •         </tr>  
  •         <tr>  
  •             <td>邮箱:</td>  
  •             <td><input type="text" name="email" size="25"></td>  
  •         </tr>  
  •         <tr>  
  •             <td><input type="submit" value="提交注册"></td>  
  •         </tr>  
  •     </form>  
  • </td></table>  
  • </body>  
  • </html>  

4.调用JavaBean添加注册信息到数据库的JSP(registerOk.jsp) 

  • <%@ page contentType="text/html;charset=gbk" language="java" %>  
  • <%@ page import="java.sql.*,rsystem.*, java.util.*" %>  
  • <%--JSP访问JavaBean--%>  
  • <jsp:useBean id="registerInfo" class="rsystem.registerInfo" scope="page">  
  • <jsp:setProperty name="registerInfo" property="*"></jsp:setProperty>  
  • </jsp:useBean>  
  • <jsp:useBean id="registerBD" class="rsystem.registerBD" scope="page"></jsp:useBean>  
  • <html>  
  • <head>  
  •     <title></title>  
  • </head>  
  • <body>  
  • <%  
  •   //调用JavaBean中的方法  
  •   try {  
  •     registerBD.setRegisterInfo(registerInfo);  
  •     registerBD.addRegisterInfo();  
  •   } catch (Exception e) {  
  •     e.printStackTrace();  
  •   }  
  • %>  
  • <%--页面跳转--%>  
  • <jsp:forward page="registerView.jsp"></jsp:forward>  
  • </body>  
  • </html>  

5.显示添加信息的JSP页面,即从数据库读取显示(registerView.jsp)

  • <%@ page contentType="text/html;charset=gbk" language="java" %>  
  • <%@ page import="java.sql.*,rsystem.*, java.util.*" %>  
  • <jsp:useBean id="registerBD" class="rsystem.registerBD" scope="page"></jsp:useBean>  
  • <html>  
  • <head>  
  •     <title></title>  
  • </head>  
  • <body>  
  • <%  
  •   Collection registers = registerBD.getRegisterInfo();  
  •   Iterator it = registers.iterator();  
  •   while (it.hasNext()) {  
  •     registerInfo register = (registerInfo)it.next();  
  • %>  
  •     <table align="center" border="1" cellpadding="0" cellspacing="0">  
  •       <tr>  
  •         <td>用户名:<%=register.getUsername()%></td>  
  •       </tr>  
  •       <tr>  
  •         <td>密码:<%=register.getPassword()%></td>  
  •       </tr>  
  •       <tr>  
  •         <td>邮箱:<%=register.getEmail()%></td>  
  •       </tr>  
  •     </table>  
  • <%  
  •   }  
  • %>  
  • </body>  
  • </html>  

运行:

在浏览器里输入registerPage.html的地址,填入用户信息进行注册,会自动跳转到registerView.jsp页面显示信息。

registerPage.html注册页面:

 

 

 

 

 

registerView.jsp显示页面:

参考:圣骑士Wind的博客、JSP应用开发详解(第三版)

转载于:https://www.cnblogs.com/wxmimperio/p/4279135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值