【Java笔记(64)】JavaWeb一小部分知识点

JavaWeb笔记

Tomcat目录的功能

目录用 途
/bin存放启动和关闭的脚本文件
/conf存放各种配置文件,包括:server.xml、tomcat-users.xml和web.xml
/lib存放服务器和所有web应用程序需要访问的jar文件
/logs存放日志文件
/temps存放运行时产生的临时文件
/webapps发布web应用程序时,通常把应用程序的目录及文件****存放到这一目录下
/workTomcat将JSP生成的servlet源文件和类文件存放到该目录中

会话管理

  • sessionID

    • 对于每一个 session,服务器端都有一个 sessionID 来标识它,获取sessionID 的方法:String session.getId();
  • Session对象获取

    • HttpServletRequest.getSession([boolean create]);
  • 使用session存取数据

    void setAttribute(String name, Object obj);//设置属性
    Object getAttribute(String name);//获取属性
    Enumeration getAttributeNames() ;//获取属性名
    void removeAttribute(String name) ;//删除属性
    
  • 其他API(补充)

    long getCreationTime();//返回session被创建的时间(自1970.1.1 GMT算起),单位毫秒
    long getLastAccessedTime() ;//返回session最后被客户访问的时间,计算方法同getCreateTime()
    boolean isNew() ;//如果客户端不知道这个会话或没有选择加入这个会话,返回值为true
    void invalidate() ;//强制会话失效(注销)
    void setMaxInactiveInterval(int interval) ;//设置会话最长的空闲时间(单位为秒),超时将失效
    int getMaxInactiveInterval() ;//获取会话最长空闲时间
    
  • 会话结束条件

    会话过期:空闲时间超过指定期限(如:30分钟)
    强制失效:服务器的session对象调用invalidate()方法(在用户注销时常使用)
    客户关闭浏览器:不够准确,浏览器关闭时将丢失保存在内存的sessionID,无法继续与服务器联系,只有会话过期才真正结束。

JSP内置对象及作用范围

四个域对象分别是:

  • pageContext (PageContextImpl 类) 当前 jsp 页面范围内有效
  • request (HttpServletRequest 类)、 一次请求内有效
  • session (HttpSession 类)、 一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
  • application (ServletContext 类) 整个 web 工程范围内都有效(只要 web 工程不停止,数据都在)
  • 四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序。
    • pageContext ====>>> request ====>>> session ====>>> application

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XC0sunWR-1610068621950)(https://i.loli.net/2021/01/05/Po7GtkMaEJQI3NV.png)]

过滤器、监视器的作用及配置

  • Filter用于对request、response对象进行修改;

  • 概念:过滤器功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。

  • 过滤器的部署–使用@WebFilter注解

  • 过滤器的顺序跟web.xml文件中配置的mapping有关

  • 过滤器的web.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app>
    	<!--过滤器的声明-->
    	<filter>
    		<filter-name>过滤器名</filter-name>
     		<filter-class>过滤器类名</filter-class>
     		<init-param>	//可选
       			<param-name>参数名</param-name>
       			<param-value>参数值<param-value>
     		</init-param>
    	</filter>
    	<!--过滤器的映射-->
     	<filter-mapping>
        		<filter-name>过滤器名</filter-name>
        		<url-pattern>访问路径</url-pattern>
      	</filter-mapping>
    </web-app>
    
  • Listener用于对context、session、request事件进行监听;

  • 事件监听器的工作步骤:

    将监听器绑定到事件源*,即注册监听器

    事件发生时会触发监听器的成员方法(即处理器),传递事件对象

    事件处理器通过事件对象获得事件源,并对事件源进行处理

  • 注册监听器:分两种情况:

    • ①使用@WebListener注解

    • ②在web.xml中指定

      <listener>
      	<listener-class></listener-class>
      </listener>
      
  • 监听器的启动顺序是web.xml的配置顺序;加载顺序是“监听器->过滤器->Servlet”。

JSP Model1、JSP Model2 、MVC设计模式

  • JSP Model1采用JSP+JavaBean
    • JSP Model 1模型将封装数据以及处理数据的业务逻辑的任务交给了JavaBean组件,JSP只负责接受用户请求和调用JavaBean组件来响应用户的请求,这种设计实现了数据、业务逻辑和页面显示的分离,在一定程度上实现了程序开发的模块化,降低了程序修改和维护的难度。
  • JSP Model 2架构模型采用JSP+Servlet+ JavaBean,实际上JSP Model2模型就是MVC
    • Servlet充当了控制器的角色,它接受用户请求,并实例化JavaBean对象封装数据和对业务逻辑进行处理,然后将调用JSP页面显示JavaBean中的数据信息。
  • MVC
    • 将软件程序分为3个核心模块:模型(Model)、视图(View)和控制器(Controller)
    • 模型(Model):用于存储数据及处理用户请求的业务逻辑。
    • 视图(View):负责向控制器提交数据,显示模型中的数据
    • 控制器(Controller):根据视图提出的请求,判断将请求和数据交给哪个模型处理,处理后的有关结果交给哪个视图更新显示。

JavaBean

  • JavaBean就是一个可重复使用的、基于Java的软件组件,可以在软件开发工具中被直观地操作。JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称Bean。如DAO文件,VO文件。由此可见,只要符合JavaBean规范的Java公共类,都可称为JavaBean。

JSP 2 及 Servlet 新特性

  • 相比JSP1.2,JSP2主要增加了如下新特性:

    • 表达式语言
    • 简化的自定义标签API
    • 可以在web.xml文件中配置JSP属性
  • web.xml文件必须使用Servlet 2.4以上版本

  • Servlet新特性

    • 异步处理:通过AysncContext类来实现异步处理允许Servlet重新发起一条新线程去调用耗时的业务方法,避免等待。
    • Web 模块支持为模块化开发、框架使用提供了巨大的方便。
    • Servlet 3.0的Annotation(注解):与以前的API相比,Servlet 3.0允许不在web.xml文件中配置组件,而是采用Annotation来配置组件。
    • Servlet 3.0还有改变是改进了部分API,这种改进很好地简化了Java Web开发。

***不同的包含、跳转功能的区别

a. include指令在JSP编译时就将对应的文件(代码)包含进来,而include 动作则不同,其会在客户端对JSP文件发出请求的时候将对应包含文件的输出包含进来;

b. include 动作还会自动检查被包含文件的变化,在每次客户端发出请求时重新把资源包含进来,进行实时的更新。也就是说,当被包含资源发生变化的时候,使用include 指令的话,服务器可能不会检测到,所以不会对其进行重新的编译。

  • 具有跳转功能的有以下四种

    • <jsp:forward>动作元素
    • html的超链接
    • response的重定向方法
    • requsest的请求转发方法
    • 区别:
      • <jsp:forward>本质是请求转发,在这行指令后续的代码都不会再运行了
      • html超链接跳转本质就是一个重定向转发
      • 请求转发和重定向的区别:
        • 请求转发是一次请求,重定向是两次请求;
        • 请求转发共享request域,重定向不能共享;
        • 请求转发只能在一个Web应用程序内进行转发请求,重定向可以到任何存在的页面
        • 请求转发的forward之后代码,不会执行,而重定向会将所有代码执行后再跳转

    常用工具

  • 日志工具:Log4j,用于在编写程序的时候,进行调试,在项目上线之后,查看系统的运行状态

  • 测试工具:JUnit,JUnit是Java编程语言的单元测试框架,用于编写和可重复运行的自动化测试。

  • 数据库操作工具:DBUtils,commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,创建连接、结果集封装、释放资源,同时也不会影响程序的性能。

  • 数据库连接池:

    • DBCP数据源 ,是Apache组织下的开源连接池实现,也是Tomcat服务器使用的连接池组件。
    • C3P0数据源,C3P0是目前最流行的开源数据库连接池之一,支持JDBC2和JDBC3的标准规范,易于扩展并且性能优越。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值