Web应用开发技术经验收获
jsp程序的部署
1、在项目文件夹下创建WEB-INF文件夹,在WEB-INF创建classes、libs文件夹和web.xml文件,classes文件夹中存放编译好的.class文件,libs中存放用到的jar包,jsp文件和html文件放在项目文件夹下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
2、将项目文件夹拷贝到tomcat文件夹的webapps底下。
3、启动tomcat,tomcat会自动加载webapps文件夹下的项目,如果要修改代码,需要重新启动服务器以便重新加载。
JavaBean的四种属性
1、简单属性
public class MyBean{
private String value;//私有属性
//get方法
public String getValue(){
return value;
}
//set方法
public void setValue(String newValue){
value = newValue;
}
}
2、索引属性
public class MyBean{
private String[] strs = new String[7];
//整个列表的get方法
public String[] getStrs(){
return strs;
}
//整个列表的set方法
public void setStrs(String[] newStrs){
strs = newStrs;
}
//列表元素的get方法
public String getStrs(int index){
return strs[index];
}
//列表元素的set方法
public void setStrs(int index,String newValue){
strs[index]=newValue;
}
}
3、绑定属性
4、约束属性
import java.beans.*;
public class MyBean{
private int value;//约束属性
private VetoableChangeSupport vetoableChangeSupport = new VetoableChangeSupport(this);//管理可否决修改监听者的实用类
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);//管理属性改变监听者的实用类
//无参数构造方法
public MyBean(){
value=0;
}
//value属性的get方法
public int getValue(){
return value;
}
//value属性的set方法
public void setValue(int newValue) throws PropertyVetoException{
int oldValue = getValue();//得到旧值
vetoableChangeSupport.fireVetoableChange("value",oldValue,newValue);//触发可否决修改事件,如果抛出属性否决异常,则中止set方法
value = newValue;//给属性赋值
propertyChangeSupport.firePropertyChange("value",oldValue,newValue);//触发属性修改事件
}
//添加可否决修改监听者
public void addVetoableChangeListener(VetoableChangeListener l){
vetoableChangeSupport.addVetoableChangeListener(l);
}
//移除可否决修改监听者
public void removeVetoableChangeListener(VetoableChangeListener l){
vetoableChangeSupport.removeVetoableChangeListener(l);
}
//添加属性改变监听者
public void addPropertyChangeListener(PropertyChangeListener l){
propertyChangeSupport.addPropertyChangeListener(l);
}
//移除属性改变监听者
public void removePropertyChangeListener(PropertyChangeListener l){
propertyChangeSupport.removePropertyChangeListener(l);
}
//不妨用一个main方法进行测试
public static void main(String[] argv){
MyBean mb = new MyBean();
//定义一个可否决修改监听者对象
VetoableChangeListener vcl = new VetoableChangeListener(){
@Override
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException{
throw new PropertyVetoException("否决属性修改!",evt);//通过抛出异常否决属性更改
}
};
//定义一个属性改变监听者对象
PropertyChangeListener pcl = new PropertyChangeListener(){
@Override
public void propertyChange(PropertyChangeEvent evt){
System.out.println("属性修改触发了事件!");
}
};
//添加监听者
mb.addVetoableChangeListener(vcl);
mb.addPropertyChangeListener(pcl);
//尝试修改属性
System.out.println(mb.getValue());
try{
mb.setValue(123);
}catch(PropertyVetoException e){
System.out.println("修改属性失败!");
}
System.out.println(mb.getValue());
mb.removeVetoableChangeListener(vcl);//移除可否决修改监听者
//尝试修改属性
try{
mb.setValue(123);
}catch(PropertyVetoException e){
System.out.println("修改属性失败!");
}
System.out.println(mb.getValue());
}
}