JavaBean
第七章——JavaBean一、教学内容1.JavaBean的引入2.什么是JavaBean?3.JavaBean的编写和保存4.JavaBean的调用5.JavaBean在JSP中的数据传输6.JavaBean使用范围7.JavaBean与文件操作8.JavaBean与数据库操作二、教学目标1.理解JavaBean;掌握JavaBean的编写和使用;2.能在JSP中获取和修改bean属性。
三、教学重点及难点1.重点:JavaBean的编写和使用;JSP中获取和修改bean属性。
2.难点:JSP中使用bean。
四、教学方式与方法演示讲解法,任务驱动法,案例教学法,问题探究法,与多媒体教学演示相结合五、实施教学第一部分:新授课一、J avaBean的引入Jsp+javaBean模式:二、什么是JavaBean?1.实质:JavaBean就是一个java类文件。
当jsp编程中多次重复使用某段代码时(eg.连接数据库)就将该代码封装成一个类文件,以公共的java文件的形式存储,以便于编程时调用。
JavaBean就是一个处理业务逻辑的类文件。
2.优点:可以使jsp网页结构清晰“业务逻辑层”和“显示层”分离;便于维护和程序扩展;节约了开发周期,避免了重复代码。
三、J avaBean的编写和保存1.编写规范:Javabean是一个public类;Javabean类是一个具有无参的构造方法,在使用<jsp:usebean>时,实例化javabean类时调用;Javabean内的属性(变量)都为私有的,这些属性只能通过javabean内的方法访问或改变,以保证数据的完整性和封装性;设置和获取属性(变量)值时使用set***和get***方法,传参。
例1:编写bean,JSP页面提供半径,调用bean计算圆面积和周长。
//Circle.java,testCircle.jsp2.保存:⑴web发布目录:JSP文件的位置,class文件的位置⑵私有目录:JSP文件的位置,class文件的位置四、J avaBean的调用(两步)1.导入JavaBean:<%@page import="test.simpleclass"%>2.Jsp中使用<jsp:useBean>调用javabean格式一:<jsp:useBean id=“objectname”scope=“page|request|session|application”class=“classname”/>格式二:<jsp:useBean id=“objectname” scope=“page|request|session|application”class=“javabean存在的包名和类名” > </jsp:useBean>id:objectname是声明的javabean对象名,在jsp中使用objname即可调用该对象;scope:表示javabean存在范围;class:表示javabean存在的路径和类名eg. <%@ page import="tom.jiafei.Circle"%>•<jsp:useBean id="circle" class="tom.jiafei.Circle" scope="page"/>•<% circle.setRadius(888);%> <p>圆的半径是:<%=circle.getRadius()%>•<p>圆的周长是:<%=circle.circleLength()%> <p>圆的面积是:<%=circle.circleArea()%>五、J avaBean在JSP中的数据传输在JavaBean中除了使用类中声明的set和get方法传输数据外,还可以使用:<jsp:setProperty>(向javaBean传值) <jsp:getProperty>(从javaBean中取值)。
标记传输和存取数据,使用时以上两个标记要成对出现。
1. <jsp:setProperty>标记:JSP中设置JavaBean的属性值,即向JavaBean发送数据。
格式一:<jsp:setProperty name=“beanname”property=“propertyname”value=“<%=expression%>”/> •beanname:表示实例名即使用<jsp:usebean>声明的对象名;•propertyname:表示bean的属性名。
只传送与propertyname匹配的变量(javabean中的属性名);•value:表示设置的bean属性的值。
例2:编写bean,使用<jsp:setProperty>与<jsp:getProperty>实现学生信息的描述功能。
思路1:新建JavaBean:Student.java新建一个stuinfo1.jsp用于传输的内容,为bean属性设置学生信息;显示bean属性中的学生信息。
格式二:<jsp:setProperty name=“beanname”property=“propertyname”param=“paramname”/>•beanname:表示实例名;propertyname:表示bean的属性名;•paramname:指定request对象中的参数名,在表单中(request对象) 对应的对象名要求:bean属性的名字必须与表单中的参数名对应。
思路2:新建JavaBean:Student.java首先建立一个提交学生信息的表单页面submitinfo.jsp,通过表单为bean属性设置学生信息。
新建一个displayinfo.jsp用于输出传输的内容,显示bean属性中的学生信息。
stuinfo2.jsp <=>submitinfo.jsp+displayinfo.jsp格式三:<jsp:setProperty name=“beanname”property=“*”/>•beanname:表示实例名即使用<jsp:usebean>声明的对象名•property=“*”:程序就会反复查找当前的所有参数,并且匹配javabean中相同名字的属性,设置(传输)所有的变量参数。
例3:编写bean,JSP页面通过表单输入两个数和四则运算符号提交给该页面,表单提交后,JSP页面将计算任务提交给一个bean完成。
//教材194-196页例子“四则运算bean”。
六、J avaBean使用范围在jsp中可以使用<jsp:useBean>指令中的scope来限制一个javabean的生命周期(存在范围)。
javabean的存在范围共有以下四种:page、request、session、application。
jsp计数器说明四种存在范围。
例4:编写bean,功能记录访问该页面的次数。
思路:新建JavaBean:Counter.java新建一个testCounter.jsp用于显示计数器的值。
1. 使用scope=“page ”设置存在范围并测试• page 的生命周期:只能调用“javabean ”的当前jsp 页面,当页面执行完毕向“客户端发送请求”或转向另一个文件(重新刷新页面时)会将原有的javabean 实例(对象)销毁,结束该javabean 的生命周期。
• 设置:<jsp:useBean id=“” class=“” scope=“page ”/>2. 使用scope=“request ”设置存在范围并测试• request 的生命周期:存在范围除了整个页面外还包括在动作元素<jsp:include>和<jsp:foraward>包含的页面中,即原页面和包含的页面都可以访问原有产生的javabean 实例(对象)。
• 设置:<jsp:useBean id=“” class=“” scope=“request ”/>3. 使用scope=“session ”设置存在范围并测试session 的生命周期:存在范围在一个会话中,当用户使用浏览器访问某个网站时就进行了一次连接,同时创建了一个代表该连接的session 对象。
设置:<jsp:useBean id=“” class=“” scope=“session ”/>4. 使用scope=“application ”设置存在范围并测试application 的生命周期:存在范围最长,只要web 服务器不重启java 就存在于服务器中。
设置:<jsp:useBean id=“” class=“” scope=“application ”/>例5:编写bean,完成用户注册功能。
七、 J avaBean 与文件操作使用JavaBean 完成文件的读写、上传、下载。
1.读文件JavaBean2.写文件JavaBean3.下载文件JavaBean4.上传文件JavaBean①使用test2javabean 使②使用test2调用test1使用test1调用八、J avaBean与数据库操作使用JavaBean完成对数据库的访问。
例7:用户登录、注册页面使用javabean 开发。
例8:使用javabean 开发一个留言板。
第二部分:概括和总结第三部分:练习举例:针对重点和难点提问第四部分:布置作业第五部分:熟悉教材代码://Circle.javapackage tom.jiafei; import java.io.*;public class Circle { int radius;public Circle() {radius=1;}public int getRadius() {return radius;}public void setRadius(int newRadius) {radius=newRadius;}public double circleArea() {return Math.PI*radius*radius;}public double circleLength() {return 2*Math.PI*radius;} }//testCircle.jsp<%@ page contentType="text/html;charset=GB2312"%><%@ page import="tom.jiafei.Circle"%><html><body bgcolor=cyan><font size=3><jsp:useBean id="circle" class="tom.jiafei.Circle" scope="page"/> <% circle.setRadius(888);%><p>圆的半径是:<%=circle.getRadius()%> <p>圆的周长是:<%=circle.circleLength()%><p>圆的面积是:<%=circle.circleArea()%> </font></body></html>//Student.javapackage tom.jiafei; import java.io.*;public class Student { String name=null; long number; double height,weight;public Student() {}public String getName() { return name; }public void setName(String newName) {name=newName; }public long getNumber() { return number; }public void setNumber(long newNumber) {number=newNumber; }public double getHeight() { return height; }public void setHeight(double newHeight) {height=newHeight; }public double getWeight() { return weight; }public void setWeight(double newWeight) {weight=newWeight; }}//stuinfo1.jsp<%@ page contentType="text/html;charset=GB2312"%> <%@ page import="tom.jiafei.Student"%><html><body bgcolor=cyan><font size=3><jsp:useBean id="stu" class="tom.jiafei.Student" scope="page"/><jsp:setProperty name="stu" property="name" value="张小小"/><br>姓名: <jsp:getProperty name="stu" property="name"/><jsp:setProperty name="stu" property="number" value="2008010101"/><br>学号: <jsp:getProperty name="stu" property="number"/><jsp:setProperty name="stu" property="height" value="1.70"/><br>身高: <jsp:getProperty name="stu" property="height"/>米<jsp:setProperty name="stu" property="weight" value="55"/><br>体重: <jsp:getProperty name="stu" property="weight"/>公斤</font></body></html>//stuinfo2.jsp<%@ page contentType="text/html;charset=GB2312"%> <%@ page import="tom.jiafei.Student"%><html><body bgcolor=cyan><font size=3><jsp:useBean id="stu" class="tom.jiafei.Student" scope="request"/><form action="" method="post"> <table width="95%" border="1"> <tr><th width="34%" align="right" scope="col"><font size="3">学号:</font></th><th width="66%" align="left" scope="col"><font size=3> <input type="text" name="number"> </font></th> </tr> <tr> <td align="right">姓名:</td><td align="left"><font size=3> <input type="text" name="name"> </font></td> </tr><tr><td align="right">身高:</td> <td align="left"><font size=3> <input type="text" name="height">米</font></td> </tr><tr> <td align="right">体重:</td> <td align="left"><font size=3> <input type="text" name="weight">公斤</font> <input type="submit" name="Submit" value="提交"></td> </tr></table> </form><jsp:setProperty name="stu" property="*"/> </font></body></html>//Counter.javapackage tom.jiafei;public class counter { private int num=0;public counter(){}public void setNum(int num){ this.num=num;}public int getNum(){num++;return num;}}//testCounter.jsp<%@ page contentType="text/html; charset=gb2312" %><%@ page import="tom.jiafei.Counter"%> <body>作用域是page:<br>我是testCounter.jsp<jsp:useBean id="count" class="tom.jiafei.Counter" scope="page"/><jsp:setProperty name="count" property="num"/>您是第<jsp:getProperty name="count" property="num"/>位用户!<jsp:include page="comeOne.jsp"/>// comeOne.jsp<%@ page contentType="text/html; charset=gb2312" %><%@ page import="tom.jiafei.Counter"%><body>我是comeOne.jsp<jsp:useBean id="count" class="tom.jiafei.Counter" scope="page"/>您是第<jsp:getProperty name="count" property="num"/>位用户!<a href="testCounter.jsp">testCounter.jsp</a>//User.java//userRegister.jsp//readFile.javapackage user.file; import java.io.*;public class ReadFile { String fileDir="e:/",fileName=""; String listFile,readContent;public void setFileDir(String s) {fileDir=s;}public String getFileDir() {return fileDir;}public void setFileName(String s){ try {byte b[]=s.getBytes("ISO-8859-1"); fileName=new String(b); } catch(Exception e){} } public String getFileName() { return fileName; }public String getListFile() { File dir=new File(fileDir); File file_name[]=dir.listFiles();StringBuffer list=new StringBuffer();for(int i=0;i<file_name.length;i++)if((file_name[i]!=null)&&(file_name[i].isFile())){String temp=file_name[i].toString(); int n=stIndexOf("\\");temp=temp.substring(n+1); list.append(" "+temp); }listFile=new String(list); return listFile; }public String getReadContent(){ try { File file=new File(fileDir,fileName); FileReader in=new FileReader(file);BufferedReader inTwo=new BufferedReader(in); StringBuffer stringBuffer=new StringBuffer(); String s=null;while((s=inTwo.readLine())!=null) {//byte bb[]=s.getBytes(); //s=new String(bb);stringBuffer.append("\n"+s); }String temp=new String(stringBuffer); readContent="<textarea rows=10 cols=62>"+temp+"</textarea>"; } catch(IOException e) {readContent="<textarea rows=8 cols=62></textarea>"; } return readContent; } }// testreadFile.jsp// wirteFile.javapackage user.file; import java.io.*;public class WriterFile {String filePath=null,fileName=null,fileContent=null; boolean success;public void setFilePath(String s){try{ byte b[]=s.getBytes("ISO-8859-1"); filePath=new String(b); }catch(Exception e){}if(filePath!=null) { File dir=new File("e:/kongh",filePath); dir.mkdir(); } }public String getFilePath() {return filePath; }public void setFileName(String s){ try{ byte b[]=s.getBytes("ISO-8859-1"); fileName=new String(b); }catch(Exception e){} }public String getFileName() {return fileName; }public void setFileContent(String s){ try { byte b[]=s.getBytes("ISO-8859-1"); s=new String(b); }catch(Exception e){}try {filePath="e:/kongh/"+filePath; File file=new File(filePath,fileName); FileWriter toFile=new FileWriter(file);BufferedWriter out=new BufferedWriter(toFile); out.write(s); out.close(); success=true; }catch(Exception e) {success=false; } }public boolean isSuccess() {return success; }}// testwriteFile.jsp<%@ page contentType="text/html;charset=GB2312"%> <%@ page import="user.file.WriterFile"%><jsp:useBean id="ok" class="user.file.WriterFile" scope="page" /><jsp:setProperty name="ok" property="filePath" param="filePath" /><jsp:setProperty name="ok" property="fileName" param="fileName" /><jsp:setProperty name="ok" property="fileContent" param="fileContent" /><html><body bgcolor=cyan><font size=2> <form action="" method="post">输入新的Web服务目录的名字:<input type="text" name="filePath" ><br>输入保存文件的名字:<input type="text" name="fileName"><br>输入文件的内容:<br> <textarea name="fileContent" rows="10" cols="40"></textarea><br><input type="submit" value="提交"> </form><%out.println(request.getParameter("filePath"));%><%if(ok.isSuccess()==true){%>写文件成功,文件所在目录: <jsp:getProperty name="ok" property="filePath" /><br>文件名字: <jsp:getProperty name="ok" property="fileName" /> <%}%></font></body></html>// downFile.javapackage user.file; import java.io.*; import javax.servlet.http.*;public class DownLoadFile { HttpServletResponse response; String fileName;public void setResponse(HttpServletResponse response) { this.response=response; }public String getFileName() { return fileName; }public void setFileName(String s) { fileName=s; File fileLoad=new File("C:/Tomcat 5.5/webapps/chap5",fileName);response.setHeader("Content-disposition","attachment;filename="+fileName); }}// testdown.jsp<%@ page contentType="text/html;charset=GB2312" %> <%@ page import="user.file.DownLoadFile,java.io.*" %><jsp:useBean id="downFile" class="user.file.DownLoadFile" scope="page" /> <html><body><p>选择要下载的文件:<br><form action="" > <select name="fileName"><option value="DownLoadFile.java">文本文件<option value="8.jpg">图片文件<option value="夜上海.ra">声音文件<option value="从学科竞赛认识教学改革.doc">汉字文件</select> <input type="submit" value="提交你的选择" > </form><%downFile.setResponse(response);%><jsp:setProperty name="downFile" property="fileName" param="fileName" /> </html></body>// upFile.javapackage user.file; import java.io.*; import javax.servlet.http.*;public class UpFile{ HttpServletRequest request; HttpSession session; String upFileMessage="";public void setRequest(HttpServletRequest request) {this.request=request; }public void setSession(HttpSession session) {this.session=session; }public String getUpFileMessage() {String fileName=null;try {String tempFileName=(String)session.getId(); File f1=new File("C:/Tomcat 5.5/webapps/chap5",tempFileName);FileOutputStream o=new FileOutputStream(f1); InputStream in=request.getInputStream();byte b[]=new byte[10000]; int n;while((n=in.read(b))!=-1) o.write(b,0,n);o.close(); in.close();RandomAccessFile random=new RandomAccessFile(f1,"r"); int second=1; String secondLine=null;while(second<=2) {secondLine=random.readLine(); second++; }int position=stIndexOf('\\'); fileName=secondLine.substring(position+1,secondLine.length()-1);byte cc[]=fileName.getBytes("ISO-8859-1"); fileName=new String(cc); // session.setAttribute("Name",fileName);random.seek(0); long forthEndPosition=0; int forth=1;while((n=random.readByte())!=-1&&(forth<=4))if(n=='\n') {forthEndPosition=random.getFilePointer(); forth++; }File f2=new File("C:/Tomcat 5.5/webapps/chap5",fileName);String temp=f2.getPath(); //目标文件的获取(包括绝对路径)session.setAttribute("Name",temp); RandomAccessFile random2=new RandomAccessFile(f2,"rw");random.seek(random.length()); long endPosition=random.getFilePointer(); long mark=endPosition; int j=1;while((mark>=0)&&(j<=6)) { mark--; random.seek(mark); n=random.readByte();if(n=='\n') { endPosition=random.getFilePointer(); j++; } }random.seek(forthEndPosition); long startPoint=random.getFilePointer();while(startPoint<endPosition-1) { n=random.readByte(); random2.write(n);startPoint=random.getFilePointer(); }random2.close(); random.close(); f1.delete(); upFileMessage=fileName+" Successfully Upload";return upFileMessage; }catch(Exception exp){if(fileName!=null) {upFileMessage=fileName+" Fail to upLoad"; return upFileMessage; }else {upFileMessage=""; return upFileMessage; } } } }// testup.jsp<%@ page contentType="text/html;charset=GB2312" %> <%@ page import="user.file.UpFile" %><jsp:useBean id="upFile" class="user.file.UpFile" scope="session" /> <html><body><p>选择要上传的文件:<br><form action="" method="post" enctype="multipart/form-data"> <input type="file" name="boy" size="45"><br><input type="submit" name="g" value="提交"> </form><% upFile.setRequest(request); upFile.setSession(session); %><jsp:getProperty name="upFile" property="upFileMessage" /><p>如果上传的是图像文件,可单击超链接查看图像: <br><a href="show.jsp">查看图像</a></html></body>// show.jsp<%@ page contentType="text/html;charset=GB2312" %> <jsp:useBean id="upFile" class="user.file.UpFile" scope="session" /> <html><body><% String pic=(String)session.getAttribute("Name"); out.print(pic+"<br>"); pic="\""+pic+"\""; //out.print(pic);out.print("<br><img src="+pic+" width=300 height=300></img>"); %><!-- <%String str="C:/Tomcat 5.5/webapps/chap5/2008-2-1.jpg";%> <img src="<%=str%>" width=300 height=300></img>--> </html></body>// DataBaseConn.javapackage lzgz.jb; import java.sql.*;public class DataBaseConn {private Connection conn; private Statement stmt; private ResultSet rs=null;private String driverName="com.mysql.jdbc.Driver"; private String url ="jdbc:mysql://localhost:3306/scorem";private String userName="root"; private String userPass="root";public DataBaseConn() {try { Class.forName(driverName); conn = DriverManager.getConnection(url,userName,userPass);stmt = conn.createStatement(ResultSet.CONCUR_READ_ONL Y, ResultSet.TYPE_SCROLL_INSENSITIVE);} catch (ClassNotFoundException e) { e.printStackTrace();} catch (SQLException e) { e.printStackTrace(); } }public ResultSet executeQuery(String sql){try { rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; }public int executeUpdate(String sql){ int cnt=0;try { cnt = stmt.executeUpdate(sql);} catch (SQLException e) { e.printStackTrace(); } return cnt; }public void close(){try { if (rs!=null) rs.close(); if (stmt!=null)stmt.close(); if (conn!=null)conn.close();} catch (SQLException e) { e.printStackTrace(); } }public String getUserName() { return userName; }public void setUserName(String userName) { erName = userName; }public String getUserPass() { return userPass; }public void setUserPass(String userPass) { erPass = userPass; }}//User.javapackage lzgz.jb; import java.sql.ResultSet; import java.sql.SQLException;public class User { private int userId; private String userName; private String userPwd;public int getUserId() { return userId; }public void setUserId(int userId) { erId = userId; }public String getUserName() { return userName; }public void setUserName(String userName) { erName = userName; }public String getUserPwd() { return userPwd; }public void setUserPwd(String userPwd) { erPwd = userPwd; }}// UserManage.javapackage lzgz.jb; import java.sql.ResultSet; import java.sql.SQLException;import java.util.ArrayList; import java.util.List;public class UserManage { private DataBaseConn dbconn;public List<User> listUsers(String sql){ List<User> userList = new ArrayList<User>();try { dbconn = new DataBaseConn(); ResultSet rs = dbconn.executeQuery(sql);while(rs.next()){ User u = new User(); u.setUserId(rs.getInt(1));u.setUserName(rs.getString(2)); u.setUserPwd(rs.getString(3)); userList.add(u);} } catch (SQLException e) { e.printStackTrace();}finally{ dbconn.close(); } return userList; }public User getUser(User u){try { dbconn = new DataBaseConn(); String sql ="select * from user where userid="+u.getUserId();ResultSet rs = dbconn.executeQuery(sql);if(rs.next()){ u.setUserName(rs.getString(2)); u.setUserPwd(rs.getString(3)); } } catch (SQLException e) { e.printStackTrace();}finally{ dbconn.close(); } return u; }public int addUser(User u){ int cnt=0; String sql ="insert into user(userId,userName,userPwd) values("+u.getUserId()+",'"+u.getUserName()+"','"+u.getUserPwd()+"')";try { dbconn = new DataBaseConn(); cnt=dbconn.executeUpdate(sql);}finally{ dbconn.close(); } return cnt; }public int updateUser(User u){ int cnt=0; String sql ="update user set userName='"+u.getUserName()+"',userPwd='"+u.getUserPwd()+"' where userId="+u.getUserId();try { dbconn = new DataBaseConn(); cnt=dbconn.executeUpdate(sql);}finally{ dbconn.close(); } return cnt; }public int deleteUser(User u){ String sql = "delete from user where userId="+u.getUserId(); int cnt=0;try { dbconn = new DataBaseConn(); cnt=dbconn.executeUpdate(sql);}finally{ dbconn.close(); } return cnt; }public boolean loginUser(User u){ boolean flag = false;String sql = "select * from user where userName='"+u.getUserName()+"' and userPwd='"+u.getUserPwd()+"' ";try { dbconn = new DataBaseConn(); ResultSet rs = dbconn.executeQuery(sql);if(rs.next()){ flag = true; }} catch (SQLException e) { e.printStackTrace(); }finally{ dbconn.close(); }return flag; }}// Message.java// MessageDao.javalistFile.jsp<%@ page contentType="text/html;charset=GB2312"%> <%@ page import="user.file.ReadFile"%><html><body bgcolor=cyan><font size=2><jsp:useBean id="file" class="user.file.ReadFile" scope="session" /><jsp:setProperty name="file" property="fileDir" param="fileDir" /><!--解决方法①:重置fileName属性,剔除遗留变量值对下一次选择的影响<jsp:setProperty name="file" property="fileName" value="" /> --><p>该目录<jsp:getProperty name="file" property="fileDir" />有如下文件:<p> <jsp:getProperty name="file" property="listFile" /><form action="" method="post" name="form1">输入一个文件名字:<input type="text" name="fileName"> <input type="submit" value="提交"> </form><!-- 测试输入或不输入名字时,fileName的值,看它是否被setProperty动作传走.现象表明:什么都不输时,不执行由param参数指定的setProperty动作,所以get动作取出的值仍然是上一次操作的值.这就是为什么不输入名字"提交"或重新选择目录回来后,有旧值存在的原因。
黑马程序员:JavaBean的属性类型
JavaBean中包含四种类型的属性,它们分别是简单属性(simple property)、索引属性(indexed property)、绑定属性(bound property)和约束属性(constrained property),首先对前两种属性进行介绍。
1、简单属性简单属性是非数组类型的属性,它的修改器必须接受一个参数,参数类型由属性的特性决定,可以是任意类型。
而简单属性的访问器仅仅是用于返回属性的值,它不接受任何参数,但它要返回一个值,返回值的类型必须与修改器所接收的参数类型一致。
public class Book {private double price;publicString getPrice() {return price;}public voidsetPrice(double price) {this.price= price;}}2、索引属性索引属性是数组类型的属性,JavaBean中需要对索引索性提供两对setter和getter方法,一对用于设置和获取数组本身,另一对用于设置和获取数组中的元素。
接下来就通过一个JavaBean来演示索引属性的定义,代码如例程所示。
class Person {// 索引属性hobbiesprivateString[] hobbies;// 设置和获取属性本身publicString[] getHobbies() {returnhobbies;}publicvoid setHobbies(String[] hobbies) {this.hobbies= hobbies;}// 设置和获取属性中的元素publicString getHobbies(int i) {returnhobbies;}publicvoid setHobbies(int i, String hobby) {hobbies= hobby;}}在例程所示的JavaBean中,定义了一个索引属性hobbies,为了使外界能够方便的操作该属性,提供了一对重载的setHobbies()方法和一对重载的getHobbies()方法,其中setHobbies(String hobbies)方法用于设置数组属性hobboes本身,而setHobbies(int i,String hobby)方法用于设置数组属性中的元素。
如何简单理解Javabean?
如何简单理解Javabean?
⼀、Bean的基本概念
1、Java⾯向对象,对象有⽅法和属性,那么就需要对象实例来调⽤⽅法和属性(即实例化);
2、凡是有⽅法或属性的类都需要实例化,这样才能具象化去使⽤这些⽅法和属性;
3、规律:凡是⼦类及带有⽅法或属性的类都要加上注册Bean到Spring IoC的注解;
4、把Bean理解为类的代理或代⾔⼈(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
⼆、JavaBean ⾄少满⾜的条件
1. 有⼀个public默认构造器(例如⽆参构造器,)
2. 属性使⽤public 的get,set⽅法访问,也就是说设置成private,同时get,set⽅法与属性名的⼤⼩也需要对应。
例如属性name,get⽅
法就要写成,public String getName(){},N⼤写。
3. 需要序列化。
这个是框架,⼯具跨平台反映状态必须的
三、Bean的特点
1、所有属性为private
2、提供默认构造⽅法
3、提供getter和setter
4、实现serializable接⼝。
javabean转xml简书
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
2.创建JavaBean类:
创建一个JavaBean类,其中包含您要转换为XML的数据。例如:
javabean转xml简书涉及到使用Java的XML处理库,如JAXB (Java Architecture for XML Binding)或DOM (Document Object Model)。以下是使用JAXB进行转换的基本步骤:
1.添加JAXB依赖:
首先,您需要在项目中添加JAXB依赖。如果您使用的是Maven,请将以下依赖添加到pom.xml文件:
StringWriterwriter=newStringWriter();
marshaller.marshal(obj, writer);
returnwriter.toString();
}
}
4.调用convertToXml方法:
现在,您可以使用convertToXml方法将JavaBean转换为XML字符串。例如:javaUse来自user=newUser();
user.setName("John");
user.setAge(30);
String xml = XmlConverter.convertToXml(user);
System.out.println(xml);
输出将是类似于以下内容的XML字符串:
简述javabean的编写要求
简述javabean的编写要求
JavaBean是Java语言中的一种编程规范,用于创建可重用、可扩展和可序列化的Java对象。
以下是JavaBean的编写要求:
1. 公共类:JavaBean类必须是一个公共类(public class)。
2. 私有属性:JavaBean类应该包含私有的属性(private fields),并通过公共的getter和setter方法(public getter and setter methods)来访问和修改这些属性。
属性的命名应遵循标准的命名规范,如使用驼峰命名法。
3. 默认构造函数:JavaBean类必须提供一个无参数的默认构造函数(public no-argument constructor)。
这是为了保证JavaBean 在反射机制等场景下的正常使用。
4. 可序列化:JavaBean类可以实现Serializable接口,以支持对象的序列化和反序列化。
这对于在网络传输和持久化存储中使用JavaBean对象非常重要。
5. 其他方法:JavaBean类可以包含其他的方法,以提供额外的功能和行为。
例如,重写equals()和hashCode()方法,实现自定义的比较逻辑。
6. 不依赖特定框架:JavaBean应该是与特定框架无关的,它应该能够在不同的环境中使用。
因此,JavaBean类不应该依赖于特定的第三方库或框架。
编写符合JavaBean规范的类可以提高代码的可读性、可维护性和可重用性。
它们可以方便地被其他Java程序访问和操作,也可以与各种Java开发工具和框架无缝集成。
1/ 1。
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):组建能够发表其⽀持的操作和属性。
同⼀时候也⽀持在其它组件中发现反复利⽤的对象库,如⽤户权限控制和电⼦邮件⾃⼰主动回复等。
简述javabean规范都有哪些-
简述javabean规范都有哪些?篇一:JavaBean规范POJO = Plain Ordinary Java Object,是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者SessionBean。
POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB,JDBC 等等。
即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
下面是摘自Martin Fowler个人网站的一句话:We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely.-- 我们疑惑为什么人们不喜欢在他们的系统中使用普通的对象,我们得到的结论是——普通的对象缺少一个响亮的名字,因此我们给它们起了一个,并且取得了很好的效果。
——Martin FowlerJavaBean规范(1)JavaBean 类必须是一个公共类,并将其访问属性设置为public ,如:public class user{......}(2)JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器(3)一个javaBean类不应有公共实例变量,类变量都为private ,如:private int id;(4)属性应该通过一组存取方法(getXxx 和setXxx)来访问,一般是IDE(Eclipse、JBuilder) 为属性生成getter/setter 方法一般JavaBean属性以小写字母开头,驼峰命名格式,相应的getter/setter 方法是get/set 接上首字母大写的属性名。
使用JavaBean连接数据库
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类型。
JavaBean详解
JavaBean详解JavaBean的概念:Javabean是一个可重复使用的软件组件,实际上是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beanJavaBean本质上是Java类,按照编写类的方法编写, 需要注意一下四点:①如果类的成员变量为XXX,那么获取和更改属性的方法必须为getXxx和setXxx.②对于boolean类型的成员变量,还可以使用isXxx获得这个属性.③类中声明的方法访问属性都必须是public的④类中声明的构造方法必须是public, 无参数的保存bean的字节码:Tomcat服务器使用字节码文件创建bean,字节码文件必须保存在特定的目录中.(Web服务器子目录\WEB-INF\classes中), Classes中还必须有与包对应的子目录结构. 比如包名为com.donaljdohn, 那么在Classes下应该建立子目录结构com\donaljdohn创建与使用bean:<jsp:useBean id="给bean起得名字" class="创建bean的类" scope="bean有效范围" type=“class_or_interface_name”></jsp:useBean>或<jsp:useBean id="给bean起的名字" class="创建bean的类" scope="bean有效范围"/>●在JSP页面中, 必须有相应的import指令●<%@ page import="com.donaldjohn.*"%>●创建bean的类中必须要带有包名.id=“"在所定义的范围中确认Bean的变量,在定义某个JavaBean时,需要指定它的ID,通过此ID对JavaBean的实例对象进行引用。
JavaBean的意义与特点
JavaBean的意义与特点1. JavaBean的概述JavaBean是一种特殊的Java类,它遵循特定的命名规范和规定的编程风格。
JavaBean主要用于封装数据,并提供公共的get和set方法来访问和修改数据的值。
JavaBean的出现使得Java编程更加灵活、可维护和可扩展。
2. JavaBean的意义JavaBean的主要意义在于封装数据和提供统一的访问接口。
它将数据与业务逻辑相分离,提供了一种简单且易于使用的方式来操作数据。
JavaBean的意义如下所述:2.1 封装数据JavaBean通过私有的成员变量来封装数据,提供get和set方法来访问和修改数据的值。
这种封装数据的方式可以提高程序的安全性,防止外部直接访问和修改数据,从而保证数据的完整性和一致性。
2.2 提供统一的访问接口JavaBean提供了统一的访问接口,使得客户端代码可以通过get和set方法来访问和修改数据的值。
这种统一的访问接口简化了客户端代码的编写,并且降低了代码的耦合度。
当需要修改JavaBean的内部实现时,客户端代码不需要改变,只需要修改对应的访问接口即可。
2.3 支持可视化编程JavaBean可以通过在图形界面编程工具中进行拖拽和放置来创建和配置。
这种可视化编程的方式使得JavaBean的使用更加方便,同时也减少了编码的工作量。
2.4 支持持久化操作JavaBean可以支持持久化操作,可以将JavaBean的状态保存到磁盘或数据库中,以便于后续的读取和加载。
这种持久化操作可以方便地将数据保存下来,避免数据的丢失,并且方便数据的共享和传输。
3. JavaBean的特点JavaBean具有以下几个特点:3.1 符合命名规范JavaBean的类名使用大驼峰命名法,如PersonBean。
属性名使用小驼峰命名法,如name、age。
方法名以get或set开头,后面跟上属性名,并且省略属性名的第一个字母,如getName()、setName(String name)。
javaBean实验报告
javaBean实验报告一、实验目的1、深入理解 JavaBean 的概念和作用。
2、掌握如何创建、使用和配置 JavaBean。
3、学会在 Java Web 应用中运用 JavaBean 来提高代码的可维护性和可复用性。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java EE Developers3、服务器:Apache Tomcat 904、 JDK 版本:JDK 18三、实验原理JavaBean 是一种遵循特定规范的 Java 类,它具有私有属性、公共的 getter 和 setter 方法,以及一个无参的构造函数。
通过这些规范,可以方便地对属性进行访问和修改,同时也有利于代码的封装和复用。
四、实验内容(一)创建 JavaBean创建一个名为`Student` 的 JavaBean 类,包含学生的学号(`id`)、姓名(`name`)和年龄(`age`)三个属性。
代码如下:```javapublic class Student {private int id;private String name;private int age;public Student(){}public int getId(){return id;}public void setId(int id) {thisid = id;}public String getName(){return name;}public void setName(String name) {thisname = name;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}}```(二)在 JSP 页面中使用 JavaBean创建一个名为`useStudentjsp` 的 JSP 页面,通过`<jsp:useBean>`标签实例化`Student` 对象,并通过`<jsp:getProperty>`和`<jsp:setProperty>`标签来获取和设置属性值。
