JavaBean、MVC、Filter和Listener
JavaBean、MVC、Filter和Listener
JavaBean
JavaBean 是一种JAVA语言写成的可重用组件。
实体类(pojo)。
JavaBean有特殊的写法:
- 必须要有一个无参构造
- 属性必须私有
- 必须要对应的set/get方法
本质就是一个java类
一般用来和数据库字段做映射
ORM:对象关系映射
- 表--->类
- 字段--->属性
- 行记录--->对象
package pojo;
public class People {
private int id;
private String name;
private int age;
private String address;
public People() {
}
public People(int id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "People{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
MVC三层架构
MVC:Model模型,View视图,Controller控制器
MVC是一种架构模式,是一种软件设计规范,是将业务逻辑、数据、显示分离的方法来组织代码。
- Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是该模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
- View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
- Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。
MVC有多种。
最典型的MVC 就是 J S P + s e r v l e t + j a v a b e a n 的模式
早期架构:
用户直接访问控制层,控制层直接访问数据库
弊端:过于臃肿,不利于维护
经典的MVC三层架构:
Filter
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
用来过滤网站的数据。
Filter开发步骤:
- 导包。除了上面的依赖,如果需要连接mysql还要导入mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
-
编写过滤器
注意:实现的Filter一定是servlet包的Filter public class MyFilter implements Filter{ // 初始化:服务器启动 @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("已经初始化"); } // 动作 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 解决乱码问题 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); System.out.println("过滤器执行前....."); chain.doFilter(request,response);//将参数传给下一个过滤器,chain过滤器链 System.out.println("过滤器执行后....."); } // 销毁:服务器关闭 @Override public void destroy() { System.out.println("已经销毁"); } }
-
在web.xml中配置过滤器
<filter> <filter-name>MyFilter</filter-name> <filter-class>Filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <!-- 只要是url :/hello的任何请求都会经过过滤器--> <url-pattern>/hello/*</url-pattern> </filter-mapping>
通过这样的例子,因为filter 所以/hello路径下的没有乱码,其他的中文依旧乱码
Listener
-
实现一个监听器的接口:有一堆监听接口什么鼠标事件、键盘事件等等
public class MyFilter implements HttpSessionListener{ // session创建触发 @Override public void sessionCreated(HttpSessionEvent se) { } // session销毁触发 @Override public void sessionDestroyed(HttpSessionEvent se) { } }
-
在web.xml中注册:
<listener> <listener-class>servlet.MyFirstServlet</listener-class> </listener>
热门相关:峡谷正能量 变身蜘蛛侠 回眸医笑,冷王的神秘嫡妃 半仙 变身蜘蛛侠