JavaWeb笔记
Tomcat目录的功能
目录 | 用 途 |
---|---|
/bin | 存放启动和关闭的脚本文件 |
/conf | 存放各种配置文件,包括:server.xml、tomcat-users.xml和web.xml |
/lib | 存放服务器和所有web应用程序需要访问的jar文件 |
/logs | 存放日志文件 |
/temps | 存放运行时产生的临时文件 |
/webapps | 发布web应用程序时,通常把应用程序的目录及文件****存放到这一目录下 |
/work | Tomcat将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
过滤器、监视器的作用及配置
-
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的标准规范,易于扩展并且性能优越。