jsp中javabean的使用
- 格式:doc
- 大小:86.50 KB
- 文档页数:5
JSP Javabean辅助类
使用JavaBean可以处理一种特定的功能,如显示当前的时间,链接数据库等。
如果一个JavaBean编写的代码太多,就会产生不容易调试,时间长了不容易读取的情况。
这时把JavaBean的代码分成不同的类,一个类完成一个指定的功能,这样结构层次清晰,分工就明确了。
在一个JavaBean中如果存在多个类,除了主类之外的其它类,我们称它们为JavaBean的辅助类。
如果读者比较熟悉Java语言的编写,对于这种形式就比较熟悉了。
现在通过一个案例演示JavaBean的辅助类的使用,该案例主要实现显示指定目录下的文件,在前面章节中使用的是JSP页面实现的这一个功能,在这里借助于
将该文件保存在指定的位置,文件名为ListFile.java。
在JavaBean文件中,存在两个类,一个FileName类实现FilenameFilter接口,起到一个过滤文件名的作用,一个ListFile类实现是一个符合JavaBean规范的类,该类主要实现设置和获得路径
的名称,并显示指定目录下的文件。
将该文件保存,文件名为BeanExample10.jsp。
打开IE浏览器,在地址栏中输入http://localhost:8080/JSPExample/BeanExample10.jsp,单击转到,会显示如图4-11所示的窗口。
图4-11 显示指定目录下文件
在JSP页面源文件中,创建一个JavaBean的实例化对象file,通过file对象利用JSP的动作标签设置和获取JavaBean的变量的值。
最后使用listFile方法输出指定目录下的所有文件,如上图所示。
在Java Web开发中,`useBean`是JSP页面内置对象`pageContext`的一个方法,用于创建或获取一个JavaBean对象。
JavaBean是一个遵循特定命名规则的Java类,主要用于封装多个属性为一个对象,并通过JSP页面进行显示和操作。
`useBean`方法的基本语法如下:```java<jsp:useBean id="beanId" class="com.example.BeanClass" scope="page|request|session|application"/>```其中:* `id`:指定JavaBean的唯一标识符。
* `class`:指定JavaBean的全限定类名(包括包名)。
* `scope`:指定JavaBean的作用范围,可选值为`page`、`request`、`session`、`application`,默认为`page`。
使用`useBean`方法创建或获取JavaBean对象时,会根据指定的作用范围和JavaBean的名称进行查找。
如果找到了匹配的JavaBean 对象,则返回该对象;如果没有找到,则根据指定的类名创建一个新的JavaBean对象。
下面是一个简单的示例,演示了如何在JSP页面中使用`useBean`方法:```jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>JavaBean Example</title></head><body><%// 创建或获取名为"person"的JavaBean对象Person person = (Person) pageContext.getAttribute("person");if (person == null) {person = new Person();person.setName("John");person.setAge(30);pageContext.setAttribute("person", person);}%><h1>Person Information</h1><p>Name: <%= person.getName() %></p><p>Age: <%= person.getAge() %></p></body></html>```在上面的示例中,首先使用`useBean`方法创建或获取名为"person"的JavaBean对象。
JavaBean简单介绍及其应⽤Bean的中⽂含义是“⾖⼦”,顾名思义JavaBean是⼀段Java⼩程序。
JavaBean实际上是指⼀种特殊的Java类。
它通经常使⽤来实现⼀些⽐較经常使⽤的简单功能。
并能够⾮常easy的被重⽤或者是插⼊其它应⽤程序中去。
全部遵循⼀定编程原则的Java类都能够被称作JavaBean。
⼀. Java Bean技术概述Java Bean是基于Java的组件模型,由属性、⽅法和事件3部分组成。
在该模型中,JavaBean能够被改动或与其它组件结合以⽣成新组件或完整的程序。
它是⼀种Java类,通过封装成为具有某种功能或者处理某个业务的对象。
因此。
也能够通过嵌在JSP页⾯内的Java代码訪问Bean及其属性。
Bean的含义是可反复使⽤的Java组件。
所谓组件就是⼀个由能够⾃⾏进⾏内部管理的⼀个或⼏个类所组成、外界不了解其内部信息和执⾏⽅式的群体。
使⽤它的对象仅仅能通过接⼝来操作。
⼆. Java Bean编写规范Java Bean实际上是依据JavaBean技术标准所指定Bean的命名和设计规范编写的Java类。
这些类遵循⼀个接⼝格式。
以便于使函数命名、底层⾏为以及继承或实现的⾏为,其最⼤的长处在于可以实现代码的可重⽤性。
Bean并不须要继承特别的基类(BaseClass)或实现特定的接⼝(Interface)。
Bean的编写规范使Bean的容器(Container)可以分析⼀个Java类⽂件。
并将其⽅法(Methods)翻译成属性(Properties),即把Java类作为⼀个Bean类使⽤。
Bean的编写规范包含Bean类的构造⽅法、定义属性和訪问⽅法编写规则。
2.1. Bean组件的⼯作机制在JavaBeansVersion1.01 A规范中定义了该组件的5种重要机制:(1)内省(Introspection):组建能够发表其⽀持的操作和属性。
同⼀时候也⽀持在其它组件中发现反复利⽤的对象库,如⽤户权限控制和电⼦邮件⾃⼰主动回复等。
JSP+JavaBean1、JavaBean类1、显示学生信息内容JavaBeanpackage com.DataBase;import java.sql.*;public class MyDbBean{private Statement stmt = null;ResultSet rs = null;private Connection conn = null;private String dsn;//构造函数public MyDbBean() { }//根据dsn参数,加载驱动程序,建立连接public void getConn(String dbname, String uid, String pwd) throws Exceptiontry{dsn = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=" +dbname;Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();conn = DriverManager.getConnection(dsn, uid, pwd);}catch (Exception ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//执行查询类的SQL语句,有返回集public ResultSet executeQuery1(String sql){rs = null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);rs = stmt.executeQuery(sql);}catch(SQLException ex){System.err.println("aq.executeQuery:"+ex.getMessage());}return rs;}//执行更新类的SQL语句,无返回集public void executeUpdate2(String sql){stmt = null;rs=null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);stmt.executeQuery(sql);stmt.close();conn.close();}catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//关闭对象public void closeStmt()try{ stmt.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}public void closeConn(){try{ conn.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}}“list.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="testbean" scope="session" class="com.DataBase.MyDbBean" /><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学籍管理系统</title></head><%! String url,sql; %><%! int i;%><body bgcolor="#ffffff"><div align="center"><font color="#000000" size="5">学籍管理系统</font> </div> <table width="75%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width=16% align=center>学号</td><td width=16% align=center>姓名</td><td width=8% align=center>性别</td><td width=8% align=center>年龄</td><td width=16% align=center>籍贯</td><td width=12% align=center>更改</td><td width=12% align=center>删除</td></tr><%//调用getConn方法与数据库建立连接testbean.getConn("Data_Stu", "sa","");sql="select * from stuInfo";ResultSet rs=testbean.executeQuery1(sql);//查询数据库while(rs.next()){%><tr><td width=16% align=center><%=rs.getString(1)%></td><td width=16% align=center><%=rs.getString(2)%></td><td width=8% align=center><%=rs.getString(3)%></td><td width=8% align=center><%=rs.getInt(4)%></td><td width=16% align=center><%=rs.getString(5)%></td><td width=12% align=center><%=rs.getString(6)%></td><td width=12% align=center><a href="change.jsp?xuehao=<%=rs.getString(1)%>">修改</a></td> <td width=12% align=center><a href="del.jsp?xuehao=<%=rs.getString(1)%>">删除</a></td></tr><%}rs.close();testbean.closeStmt();testbean.closeConn();%></table><div align="center"><a href="insert.jsp">添加新记录</a> </div></body></html>2、添加记录“insert.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>添加记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">添加新记录</font></div><form name="form1" method="post" action="query.jsp"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"> <tr><td width="46%" align="center">学号</td><td width="54%"> <input type="text" name="xuehao" size="7"></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%"> <input type="text" name="name" size="8"></td></tr><tr><td width="46%" align="center">性别</td><td width="54%"> <select name="sex" size="1"><option value="男" selected> 男</option><option value="女">女</option></select></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%"> <input type="text" name="age" size="2"></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%"> <input type="text" name="jiguan" size="8"></td></tr><tr><td width="46%" align="center">院系</td><td width="54%"> <input type="text" name="department" size="8"></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交"> <input type="reset" name="reset" value="清空"></td></tr></table></form></body></html>“query.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="query" scope="session" class="com.DataBase.MyDbBean"/> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>插入数据</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");//编码转换sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(xuehao.length()!=7){//检查学号的位数response.sendRedirect("err.jsp");}response.sendRedirect("err.jsp");}//调用getConn()方法与数据库建立连接query.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=query.executeQuery1(sql);if(rs.getRow()>0){ response.sendRedirect("err.jsp"); }sql="insert into stuInfo(学号,姓名,性别,年龄,籍贯,院系)";sql=sql+"values('"+xuehao+"','"+name+"','"+sex+"','"+i+"','"+jiguan+"','"+department+"')";query.executeUpdate2(sql);out.println("<font size=3 color=blue>正在处理信息,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");rs.close();query.closeStmt();query.closeConn();%></body></html>3、更改记录“change.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">修改记录</font> </div><%! String xuehao,url,sql,sex; %><%xuehao=request.getParameter("xuehao").trim();//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=modify.executeQuery1(sql);while(rs.next()){%><form name="form1" method="post" action="change_query.jsp?xuehao=<%=xuehao%>"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width="46%" align="center">学号</td><td width="54%"> <%=rs.getString(1)%></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%"> <input type="text" name="name" size="8" value=<%=rs.getString(2)%>></td></tr><tr><td width="46%" align="center">性别</td><td width="54%"> <%sex=rs.getString(3).trim();if(sex.equals("男")){%><option value="男" selected>男</option><option value="女">女</option></select><% }else{%><select name="sex" size="1"><option value="男" >男</option><option value="女"selected>女</option></select><% } %></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%"> <input type="text" name="age" size="2" value=<%=rs.getInt(4)%>></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%"> <input type="text" name="jiguan" size="8" value=<%=rs.getString(5)%>></td></tr><tr><td width="46%" align="center">院系</td><td width="54%"> <input type="text" name="department" size="8" value=<%=rs.getString(6)%>></td></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交"> <input type="reset" name="reset" value="清空"></td></tr></table></form><%}rs.close();modify.closeStmt();modify.closeConn();%></body></html>“change_query.jsp”<%--Document : change_queryCreated on : 2010-5-8, 17:32:29Author : Administrator--%><%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();out.print(xuehao);name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(name.equals("")){response.sendRedirect("err1.jsp");}try{//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="update stuInfo set 姓名= '"+name+"',性别= '"+sex+"',年龄="+i+",籍贯= '"+jiguan+"',院系=modify.executeUpdate2(sql);out.println("<font size=3 color=blue>正在修改记录,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");modify.closeStmt();modify.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>4、删除记录“del.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="del" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>删除记录</title></head><body><%! String xuehao,url,sql; %><%xuehao=request.getParameter("xuehao").trim();try{//调用getConn()方法与数据库建立连接del.getConn("Data_Stu","sa","");sql="delete from stuInfo where 学号='"+xuehao+"'";del.executeUpdate2(sql);out.println("<font size=3 color=blue>正在删除数据,请稍后......</font>" +"<meta http-equiv='refresh' content='2;url=list.jsp'>");del.closeStmt();del.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>JSP+ Servlet 访问数据库<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><form name="form1" method="post" action="servlet"><p>客户查询</p><p>请输入用户名:<input type="text" name="USERNAME"><input type="submit" name="Submit" value="提交"></p><p> </p></form><form name="form2" method="get" action="servlet"><p>根据总数查询</p><p>总数范围在<input type="text" name="totalmin">和<input type="text" name="totalmax">之间</p><p><input type="submit" name="Submit2" value="提交"></p></form><p> </p></body></html>package tree;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;public class queryextends HttpServlet {private static final String CONTENT_TYPE = "text/html; charset=GB2312";//Initialize global variablespublic void init() throws ServletException {super.init();}//执行HTTP Post请求public void doPost(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException{PrintWriter out=response.getWriter();response.setContentType(CONTENT_TYPE);//设置响应的MIME类型。
JSP 使用JavaBean我们知道,JavaBean是从JSP页面中分离出来的Java代码,是JSP页面的动态部分。
在这里可以以面向对象的方式来看待JSP页面和JavaBean之间的关系,JSP 页面是一个独立的对象,JavaBean是一个独立的对象,其形式如图4-1所示:图4-1 JSP页面和JavaBean关系从上图中可以看出,JSP页面和JavaBean组件都是独立对象,JSP页面如果要使用JavaBean,必须通过相应语句调用JavaBean,即JSP动作标记。
1.useBean标记在JSP页面中使用JavaBean,必须在JSP页面中有调用另外一个JavaBean对象的语句。
该语句为JSP的动作标签<jsp:useBean>,<jsp:useBean>动作标签主要功能调用一个JavaBean,这里需要注意的是,在使用JavaBean的JSP页面中,最好使用import指令(<@page import=“包名.类名”>)把JavaBean类引入到JSP页面中。
记为useBean标记,语法格式为:上面useBean标记的两种语法格式作用相同,都是创建Bean或从服务器获得现有Bean。
第一个语法格式可以称为空标记,即没有结束标记;第二种语法格式为非空标记,有开始标记和介绍标记。
两种语法格式里面包含的属性含义相同。
●id属性表示在整个页面引用Bean的惟一值,即JavaBean类被引入到当前文件中实例化对象的名称。
该名称具有惟一性、区分大小写、第一个字符必须为字母和不允许有空格等特性。
可以在同一个JSP页面,多次引用一个JavaBean类,但需要为该JavaBean指定不同的id值。
●class属性表示在JSP页面中引入的JavaBean的类名,即JavaBean所处位置。
其写法有两种形式,第一种形式为JavaBean不属于特定的包,如下所示:第二种形式是JavaBean属于一个特定的包,其语法格式如下所示:有四个值,分别为page、request、session、application。
usebean的用法一、概述usebean是JSP中的一个标签,主要用于在JSP页面中创建JavaBean对象,并将其作为一个变量存储在page、request或session范围内,以便在后续的代码中使用。
二、语法usebean标签的语法如下:<jsp:useBean id="beanName" class="className"scope="scopeName"/>其中,id属性用于指定JavaBean对象的名称,class属性用于指定JavaBean对象所属的类名,scope属性用于指定JavaBean对象存储的范围。
三、使用方法1. 创建JavaBean类首先需要创建一个JavaBean类,该类需要包含一些成员变量和对应的getter和setter方法。
例如:public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}2. 在JSP页面中使用usebean标签创建JavaBean对象在JSP页面中使用usebean标签创建JavaBean对象,并将其存储在page、request或session范围内。
例如:<jsp:useBean id="user" class="er"scope="session"/>3. 使用EL表达式访问JavaBean对象通过EL表达式可以方便地访问存储在page、request或session范围内的JavaBean对象。