javaBean里的一些小知识点

本文详细解析了JSP与Servlet中的变量作用域与生存周期的区别,并介绍了HTML注释、Java注释及JSP注释的特点。此外还阐述了contentType与pageEncoding的作用,以及<jsp:param>和<jsp:forward>的工作机制。

脚本段的变量在整个页面内有效,但随着网页关闭而消失.

声明内的变量在整个页面内有效,但不随网页页面的关闭而消失.

以上两个属性,一个 是变量的作用域,一个是变量的生存周期.

HTML注释在浏览器的 HTML源码内可以看到,servlet里也能看到.

java注释在浏览器的HTML源码内看不到,在servlet里可以看到.

jsp注释在浏览器的HTML源码内和servlet里都看不到.

contentType用来指定jsp页面输出内容的类型和编码方式.

pageEncoding用来指定jsp页面的字符编码.

<jsp:param>子动作一次只能传递一个参数.

<jsp:forward>是在服务器端完成页面跳转,浏览器地址栏的内容不会改变.

request.getParameter()如果请求参数不存在会返回为null,不会抛出异常.

response.sendRedirect(url)先将一个临时响应返回给客户端浏览器,由浏览器重新发送请求.

一次会话:客户端打开浏览器连接到服务器,到关闭浏览器离开服务器为一次会话.

cookie不是jsp内置对象.

cookie对象不能以$开头,一旦创建之后,对象值可以更改,对象名不能更改.

response.addCookie(cookie e)将cookie对象写入到客户端,在写入前指定的cookie的有效期,否则 默认为负值(有效期为一次会话)

每个站点只对应一个cookie文件,一个cookie文件里可以有多个cookie对象.

application对象在服务器启动时创建,在服务器关闭时消失.

jsp最终以servlet的形式为客户端提供服务.

jsp替代servlet的原因是:servlet不易于格式化输出html,且代码混乱不易于理解,且对用户请求响应的方法是doGet()或doPost()


<think>好的,我需要为用户生成一个关于JavaBean知识点的思维导图。首先,我得回顾一下JavaBean的基本概念和相关内容。根据用户提供的引用,特别是引用[3]中的内部类示例,可能用户对JavaBean的结构和规范有所关注。另外,用户之前询问过JSP隐含变量的思维导图,因此可能需要保持结构的一致性,方便用户对比学习。 首先,JavaBean的核心是遵循特定规范的Java类,通常用于封装数据。需要包括属性、方法、事件等部分。属性需要私有化,并通过公共的getter和setter方法访问,这是JavaBean的重要特性。此外,用户可能还关心JavaBean在MVC模式中的应用,比如在Spring中作为模型层组件,或者与JSP结合使用,如通过useBean标签访问。 然后,考虑到引用[1]提到了Spring MVC的DispatcherServlet和上下文加载,可能需要强调JavaBean在Spring框架中的角色,比如依赖注入、配置管理。不过用户的需求是JavaBean本身的知识点,所以这部分可能作为应用场景来提及,但不应喧宾夺主。 引用[3]中的内部类示例,虽然内部类本身不是JavaBean的核心内容,但JavaBean可能需要遵循的规范,比如序列化、无参构造器等,这些需要明确列出。此外,JavaBean的事件处理机制虽然现在使用较少,但作为知识点还是需要涵盖。 接下来,需要组织思维导图的层次结构。可能的分支包括定义与规范、核心特性、应用场景、相关技术集成(如JSP、Spring)、开发工具支持等。每个分支下再细分具体内容,比如核心特性中包含属性封装、方法规范、事件机制等。 需要注意用户可能混淆JavaBean与普通POJO的区别,因此在思维导图中应明确两者的差异,例如JavaBean需要实现Serializable接口,提供默认构造器等。同时,用户可能对如何在JSP中使用JavaBean感兴趣,比如<jsp:useBean>标签,这需要包含在应用场景中。 最后,检查是否有遗漏的重要点,比如JavaBean的命名约定(属性名与getter/setter方法对应)、使用场景中的框架整合(如Hibernate、Spring),以及可能的设计模式应用(如观察者模式用于事件处理)。确保思维导图结构清晰,覆盖主要知识点,同时不过于冗杂。</think>### **JavaBean知识点思维导图** ``` JavaBean规范与核心特性 ├─ **定义与目的** │ ├─ 可重用组件(数据封装与标准化操作) │ └─ 设计目标:实现模块化、可视化操作(如IDE拖拽支持) ├─ **核心规范** │ ├─ **属性定义** │ │ └─ 私有字段 + 公共访问方法(getXxx()/setXxx()) │ │ └─ 示例: │ │ ```java │ │ private String name; │ │ public String getName() { return name; } │ │ public void setName(String name) { this.name = name; } │ │ ``` │ ├─ **方法要求** │ │ └─ 必须包含无参构造函数(反射依赖) │ │ └─ 支持事件监听(add/removeXXXListener()) │ ├─ **序列化支持** │ │ └─ 实现`Serializable`接口(跨网络或持久化存储)[^1] ├─ **应用场景** │ ├─ **JSP集成** │ │ └─ 通过`<jsp:useBean>`标签直接操作 │ │ └─ 示例: │ │ ```jsp │ │ <jsp:useBean id="user" class="com.example.User" scope="session"/> │ │ <jsp:setProperty name="user" property="name" value="Alice"/> │ │ ``` │ ├─ **框架支持** │ │ ├─ Spring:依赖注入(@Component/@Autowired) │ │ └─ Hibernate:ORM映射(实体类与数据库表关联)[^4] ├─ **与POJO的区别** │ ├─ JavaBean必须满足严格规范(如默认构造器、属性方法) │ └─ POJO仅为普通Java对象(无强制约束) └─ **工具与扩展** ├─ IDE支持(如Eclipse/IntelliJ属性编辑器) └─ 结合反射机制(动态调用getter/setter)[^2] ``` --- ### **关键说明** 1. **属性访问规则** - 布尔类型属性需使用`isXxx()`而非`getXxx()`(如`isActive()`) - 遵循驼峰命名法(如`firstName`对应`getFirstName()`) 2. **事件处理机制** - 基于观察者模式(监听器注册与触发) - 示例: ```java public class ButtonBean { private List<ActionListener> listeners = new ArrayList<>(); public void addActionListener(ActionListener l) { listeners.add(l); } public void click() { listeners.forEach(l -> l.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "click"))); } } ``` 3. **与Spring整合** - 通过`@Component`注解声明Bean,由Spring容器管理生命周期[^1] - 示例: ```java @Component public class UserBean { private String role; // getter/setter省略 } ``` --- ### **代码示例** ```java // 符合JavaBean规范的类 public class Student implements Serializable { private String id; private int age; // 无参构造器(必需) public Student() {} // getter/setter方法 public String getId() { return id; } public void setId(String id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { if (age < 0) throw new IllegalArgumentException(); this.age = age; } } ``` --- ### **相关问题** 1. **如何通过反射动态调用JavaBean的setter方法?若属性名称为`emailAddress`,对应的方法名是什么?** 2. **在Spring框架中,如何配置JavaBean的作用域(如prototype、request)?与JSP的`scope`有何关联?** 3. **为什么JavaBean要求实现`Serializable`接口?在分布式系统中它的作用是什么?** : JavaBean的序列化支持是实现数据持久化和网络传输的基础(如HTTP Session复制)。 : 反射机制通过`java.beans.Introspector`类解析JavaBean属性,动态生成访问方法。 [^4]: MyBatis通过`resultMap`将数据库字段映射到JavaBean属性(基于getter/setter方法)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值