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-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>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |