首页 > 编程语言 >JavaWeb学习-MVC

JavaWeb学习-MVC

时间:2024-06-16 17:25:55浏览次数:23  
标签:Filter JavaWeb void public 学习 controller MVC servlet 监听

前言

基于JavaWeb基础知识进行优化,形成了MVC的开发模式。

程序结构优化

教程原来案例中的servlet太多了,希望只有一个servlet,把原来多个servlet的合并成一个,根据参数operation判断用哪个方法并用反射调用,都写到了新servlet的service方法中了。引入dispatcherservlet,作为中心控制器,把原来整合后的servlet都换成controller,不再是servlet了。
dispatcherservlet开始加载不同关键字和controller的对应关系,然后根据前端传入的url关键字(servletpath)调用不同controller,然后根据参数operation调用controller中不同的方法。
原来controller中的重定向,改为返回重定向的信息String,由dispatcherservlet接收后统一重定向(如果需要重定向的话),参数获取也由dispatcherservlet统一基于反射获取然后传给controller中的方法,不在需要在controller进行参数获取和重定向,controller变成一个普通类。

另外将业务逻辑抽出为Service层,来将Dao中的单精度操作聚合,使web整体层次更清晰。

MVC

MVC : Model(模型)、View(视图)、Controller(控制器)
视图层:用于做数据展示以及和用户交互的一个界面
控制层:能够接受客户端的请求,具体的业务功能还是需要借助于模型组件来完成
模型层:模型分为很多种:有比较简单的pojo/vo(value object),有业务模型组件,有数据访问层组件
1) pojo/vo : 值对象
2) DAO : 数据访问对象,DAO中的方法都是单精度方法或者称之为细粒度方法。什么叫单精度?一个方法只考虑一个操作,比如添加,那就是insert操作、查询那就是select操作....
3) BO : 业务对象,BO中的方法属于业务方法,也实际的业务是比较复杂的,因此业务方法的粒度是比较粗的

补充

filter

Filter也属于Servlet规范。

Filter开发步骤:新建类实现Filter接口,然后实现其中的三个方法:init、doFilter、destroy

配置Filter,可以用注解@WebFilter,也可以使用xml文件

Filter在配置时,和servlet一样,也可以配置通配符,例如 @WebFilter("*.do")表示拦截所有以.do结尾的请求

以下是一个Filter的案例,拦截所有以.do结尾的请求,会在处理请求前先打印"helloA"然后等请求处理完之后再打印"helloA2"

@WebFilter("*.do")
public class Demo01Filter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("helloA");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("helloA2");
    }

    @Override
    public void destroy() {

    }
}

listener

监听器分类:

  1. ServletContextListener - 监听ServletContext对象的创建和销毁的过程
  2. HttpSessionListener - 监听HttpSession对象的创建和销毁的过程
  3. ServletRequestListener - 监听ServletRequest对象的创建和销毁的过程
  4. ServletContextAttributeListener - 监听ServletContext的保存作用域的改动(add,remove,replace)
  5. HttpSessionAttributeListener - 监听HttpSession的保存作用域的改动(add,remove,replace)
  6. ServletRequestAttributeListener - 监听ServletRequest的保存作用域的改动(add,remove,replace)
  7. HttpSessionBindingListener - 监听某个对象在Session域中的创建与移除
  8. HttpSessionActivationListener - 监听某个对象在Session域中的序列化和反序列化

监听器举例:

public class MyServletContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("Servlet上下文对象初始化动作被我监听到了....");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("Servlet上下文对象销毁动作被我监听到了.....");
    }
}

Cookie是浏览器端的缓存

  • 设置Cookie的有效时长
    cookie.setMaxAge(60) , 设置cookie的有效时长是60秒
  • Cookie的应用:
    记住用户名和密码十天 setMaxAge(60 * 60 * 24 * 10)
    十天免登录

参考

尚硅谷javaweb教程

标签:Filter,JavaWeb,void,public,学习,controller,MVC,servlet,监听
From: https://www.cnblogs.com/fattree/p/18250915

相关文章

  • JavaWeb学习-前端知识小结
    前言参照B站尚硅谷的教程进行学习,对javaweb的前端知识做个简单的小结,主要内容包括html、css、javascript。其中html表示了前端页面的结构和元素,例如表格、文本框、表单等;css表示前端页面的样式,例如段落中文字的颜色、字体大小,表格中文字的颜色,字体大小等;JavaScript是弱类型的脚本......
  • JavaWeb学习-tomcat和servlet
    前言本文介绍javaweb的基本知识,包括CS和BS的架构形式、web容器、servlet等。CS和BSCS:客户端服务器架构模式优点:充分利用客户端机器的资源,减轻服务器的负荷。缺点:需要安装;升级维护成本较高。BS:浏览器服务器架构模式优点:客户端不需要安装;维护成本较低。缺点:所有的计算和存储......
  • 学习心得
    《构建之法》是一本深入探讨软件工程实践与项目管理精髓的书籍,它不仅仅局限于技术层面的讲解,而是从更广阔的视角出发,涵盖了团队协作、项目规划、质量控制、持续集成等多个方面,为读者提供了一套全面而实用的软件开发方法论。阅读此书后,我深受启发,以下是我几点深刻的体会。首先,书中......
  • 学习心得2
    接着昨天的继续学习每一次翻开《构建之法》,都仿佛是在与一位智慧而经验丰富的导师进行对话,它不仅提供了构建高质量软件的实践框架,更是一次对个人成长和团队协作哲学的深刻探讨。这次重读,我又有了一些新的收获和感悟。最令我触动的是书中对“持续学习”文化的强调。在软件行业,技......
  • c++学习笔记(二)
    c++中的引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++引用vs指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用......
  • SpringCloud2023 - 学习笔记
    文章目录1.简介1.1基础知识1.2组件更替与升级2.微服务基础项目构建2.1创建项目2.2Mapper4生成代码2.3支付模块编码2.4项目完善2.5订单模块编码2.6工程重构3.consul服务注册与发现3.1consul简介3.2consul下载安装3.3微服务入驻3.4order订单微服务入驻3.5......
  • springMVC获取请求参数
    目录4、springmvc获取请求参数4.1、通过的ServletAPI获取4.2、通过控制器方法的形参获取请求参数4.3、@RequestParam4.4、@RequestHeaher4.5、@CookieValue4.6、通过pojo获取请求参数4.7解决获取请求参数的乱码问题4、springmvc获取请求参数4.1、通过的ServletAPI获取4.2、通过......
  • 【机器学习与R语言】系列笔记
    几年前做的机器学习与R语言相关笔记,迁移到公号记录之。1-机器学习简介2-懒惰学习K近邻(KNN)3-概率学习朴素贝叶斯(NB)4-决策树5-规则学习算法6-线性回归7-回归树和模型树8-神经网络9-支持向量机10-关联规则11-Kmeans聚类12-如何评估模型的性能?13-如何提高模型的性能?......
  • go学习06
    go读取yaml文件配置config.yaml文件如下mysql:host:localhostport:3306username:myuserpassword:mypassworddatabase:mydatabase读取packagemainimport( "github.com/spf13/viper")funcmain(){ //设置配置文件名和路径(可选) viper.SetConfig......
  • C++双端队列deque源码的深度学习(stack,queue的默认底层容器)
    什么是deque?deque是C++标准模板库(STL)中的一个容器,代表“双端队列”(double-endedqueue)。deque支持在其前端(front)和后端(back)进行快速插入和删除操作,并且它在序列的中间插入和删除元素时通常比vector或list更高效。deque的特点双端插入和删除:你可以在deque的头部和尾部快速......