ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java Bean -- web开发

2020-01-17 14:37:17  阅读:269  来源: 互联网

标签:WEB Java Tomcat web Bean 文件夹 JSP JavaBean


转自:https://blog.csdn.net/joywy/article/details/7773503

一、JavaBean简介

JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:

  1. 可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
  2. 可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

二、JavaBean开发要求

  1. JavaBean本身就是一个类,属于Java的面向对象编程。

  2. JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:

     (1) 所有的类必须放在一个包中,在WEB中没有包的是不存在的;
    
     (2) 所有的类必须声明为public class,这样才能够被外部所访问;
    
     (3) 类中所有的属性都必须封装,即:使用private声明;
    
     (4) 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
    
     (5) 一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。
    

第一个简单JavaBean

如果在一个类中只包含属性、setter、getter方法,那么这种类就成为简单JavaBean。

package javabean;  
public class SimpleBean{  
    private String name;  
    private int age;  
    public void setName(String name){  
        this.name = name;  
    }  
    public void setAge(int age){  
        this.age = age;  
    }  
    public String getName(){  
        return this.name;  
    }  
    public int getAge(){  
        return this.age;  
    }  
}

对于简单的JavaBean也有几个名词:
(1)VO:与简单Java对象对应,专门用于传递值的操作上
(2)POJO:简单Java对象
(3)TO:传输对象,进行远程传输时,对象所在的类必须实现java.io.Serializable接口。

三、WEB开发的标准目录结构

Web项目中各个目录的作用:

No. 目录或文件名称 作用
1 WEB ROOT Web的根目录,一般虚拟目录直接指向此文件夹,此文件夹下必然直接包含WEB-INF
2 WEB-INF Web目录中最安全的文件夹,保存各种类、第三方jar包、配置文件
3 Web.xml Web的部署描述符
4 classes 保存所有的JavaBean,如果不存在,可以手工创建
5 lib 保存所有的第三方jar文件
6 tags 保存所有的标签文件
7 jsp 存放*.jsp文件,一般根据功能再建立子文件夹
8 js 存放所有需要的*.js文件
9 css 样式表文件的保存路径
10 images 存放所有的图片,如*.gif或*.jpg文件

注:
1.打包编译:编译时直接使用javac -d . SimpleBean.java命令根据package的定义打包编译。
2.Tomcat中classpath的配置:

所有的class要进行访问时都必须在classpath中进行配置,在Tomcat中依然可以使用,在Web开发中,Tomcat安装目录的lib文件夹、 WEB-INF\classes和WEB-INF\lib文件夹实际上都表示了classpath,所以直接将类或jar包复制到这些文件夹中就可以直接使用了。

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="javabean.*"%>    <!-- 导入javabean包 -->
<html>
<head><title>welcome</title></head>
<body>
<%
	SimpleBean simple = new SimpleBean();    //声明并实例化SimpleBean对象
	simple.setName("yy");                    //设置name属性
	simple.setAge(23);                       //设置age属性
%>
<h3>姓名:<%=simple.getName()%></h3>            <!-- 输出name属性的内容 -->
<h3>年龄:<%=simple.getAge()%></h3>             <!-- 输出age属性的内容 -->
</body>
</html>

四、使用jsp:useBean指令

除了使用import的语句之外,也可以使用JSP中提供的:<jsp:useBean>指令完成操作,指令的操作语法如下所示:

1.<jsp:useBean id="实例化对象名称" scope=“保存范围” class=“包.类名称“/>

2.主要属性:
(1)id:表示实例化对象的名称
(2)scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、application
(3)class:对象所对应的包.类名称

样例:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<jsp:useBean id="simple" scope="page" class="javabean.SimpleBean"/>
<html>
<head><title>welcome</title></head>
<body>
<%
	simple.setName("yy");
	simple.setAge(23);
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

在使用<jsp:useBean/>指令时,实际上会默认调用SimpleBean类中的无参构造方法进行对象实例化,当修改SimpleBean.java文件后,如果要想让其起作用,则需要重新启动服务器,我们可以通过在Tomcat中直接配置自动加载的操作,这样即使不重新启动服务器,JavaBean修改后也可以被立即加载进来。重新加载的配置如下:在Tomcat安装目录下conf/server.xml文件中进行配置

<Context path="/yy" docBase="D:\myweb" reloadable="true"/>

以后Tomcat会自动进行检测,如果发现JavaBean修改之后会自动进行重新加载。

注意:
1.直接在配置虚拟目录的位置上增加一个reloadable属性即可,但是这种情况只适合于开发,因为使用reloadable自动加载后,服务器将始终处于监视状态,一旦发现类修改后就要立刻重新加载,运行性能是比较低的,所以,当项目真正发布运行时一定要将reloadable的内容设置成false,以提升服务器运行性能。

2.还要记住,当Tomcat重新加载了新的内容后,所有的操作都将初始化,所有设置过的session属性都将消失。

四、<jsp:useBean>在这里插入代码片指令内部实现原理

依靠的是反射机制完成的,在使用<jsp:useBean>指令时需要定义对象所在的“包.类“名称,而且又要求类中存在无参构造方法,这就是反射操作的前提条件,所以<jsp:useBean>的语法实际上属于反射机制的操作实现。

JavaBean 使用详解(idea开发)

while_false_ 发布了187 篇原创文章 · 获赞 17 · 访问量 2万+ 私信 关注

标签:WEB,Java,Tomcat,web,Bean,文件夹,JSP,JavaBean
来源: https://blog.csdn.net/qq_34595352/article/details/104018303

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有