javaWEB基础
2015-06-27 12:24
567 查看
tomcat实际上是通过catalina.bat启动服务器的。
tomcat的一个web应用的目录结构
WebContent
|---WEB-INF
| |---classes
| |---lib
| |---web.xml
|---*.html *.jsp *.serverlet
在任意一个目录下部署WEB应用(在conf/catalina/localhost/下创建一个xml文件)
-------------------------------------------------------------
servlet
配置(一个servlet可以有对应多个servlet-mapping)
在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种是以/开头并以/*结尾。
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
生命周期方法:
1.构造方法:只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造函数。这说明Servlet是单实例的。
2.init方法:只被调用一次,在servlet实例被创建好以后立即被调用,用于初始化当前的servlet。
3.service方法:每次请求的时候都会被调用。
4.destroy方法:只被调用一次,当当前servlet被web应用卸载前调用。用于释放当前servlet所占用的资源。
load-on-startup参数:配置在servlet节点中,制定servlet被创建的时机。
若为负数,则在第一次被请求时被创建,若为正数或0,则在web应用在加载的时候就被创建,且数值越小越先被创建。
<load-on-startup>1</load-on-startup>
ServletConfig对象:跟<init-param>有关
ServletContext:
可以由ServletConfig获得
该对象代表web应用,可以从中获得web应用的各种信息。
可以获得web应用初始化参数
getRealPath
getContextPath
Service方法的两个参数
ServletRequest
ServletResponse
HttpServlet
--------------------------------------------------------------
JSP: java Server Page
JSP可以放置在WEB应用程序中除了WEB-INF及其子目录外的任何目录,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。
本质上是一个Servlet,每个JSP在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件。然后再由WEB容器像调用普通Servlet程序一样的方式装载和解释执行这个由JSP页面翻译成的Servlet程序
JSP的9个隐含对象;request、response、pageContext、session、application、config、out、page.还有一个叫做exception的隐含对象。
pageContext:代表页面的上下文,可以从该对象获得另外9个对象。(多用于自定义标签)
application:代表当前WEB应用,是ServletContext对象。
config:当前JSP对应的Servlet的ServletConfig对象。
page:指向当前JSP对应的Servlet对象的引用,但为Object类型(几乎不使用)。
exception;在声明了page指令"isErrorPage=true"时,才可以使用。
JSP模板元素;JSP页面中的静态html内容称之为JSP模板元素。
JSP表达式:提供了一种将java变量或表达式的结果直接输出到页面的简化方式<%= %>
JSP脚本片断:指嵌套在<% %>中的一条或多条java代码。
JSP声明:将java代码声明在<%! %>中,则在生成的Servlet里面会把相应的代码写在_jspService方法外面(基本不用)。
JSP注释:<%-- %>
属性的作用范围:pageContext request session application
请求转发:一次请求,请求的request对象为同一个对象;只能转发到内部资源;/ 代表当前WEB应用的根目录
请求重定向:两次请求,请求的request对象为两个对象;可以转发到任何资源;/ 代表当前站点的根目录
JSP指令:是为JSP引擎设计的,并不会产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令格式: <%@ 指令 属性="值" %>,在目前的JSP2.0中;page、include、taglib。
page常用属性:import、session、errorPage和isErrorPage、ContentType、isELIgnored等
也可以在web.xml中定义error页面:根据error code定义或根据异常类型定义
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<exception-type>xxx</exception-type>
<location>error.html</location>
</error-page>
如何使客户不能直接访问一个页面呢?对于Tomcat服务器而言,放在WEB-INF下的文件是不能通过在浏览器中输入URL来直接访问的。
但通过请求的转发是可以的。
include:<%@ include file="xxx" %>,叫做静态引入。
JSP include标签:<jsp:include page="xxx.jsp"></jsp:include>,动态引入。
JSP forward标签:<jsp:forward page="xxx.jsp"></jsp:forward>,可通过<jsp param >标签传入参数
JSP param标签
request.setCharacterEncoding("UTF-8");
DAO层:
1.数据库的连接(数据库连接池,jdbcUtils(通过数据库连接池获得连接和释放连接))
2.一个DAO类,实现增删改查
3.一个对应的javaBean,实现数据库到对象的映射
4.类的DAO接口和实现类
多个请求利用反射机制使用一个Servlet实现
Cookie:
如果创建一个cookie,并将它发送到浏览器,默认情况下是一个会话级别的Cookie;存储在浏览器的内存中,用户退出浏览器
之后被删除。若希望将cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将maxAge设置为0则是命令浏览器
删除该cookie。
Cookie的作用路径(path): Cookie.setPath("/");
response.add(cookie);
默认设置的cookie只作用于当前目录以及当前目录子目录,而不能作用于当前目录的父目录。
HttpSession的生命周期:
session的创建:
当客户端第一次访问WEB资源并有创建session的需要时,WEB会创建一个session对象。若已创建session对象,则不会再次创建。
对于JSP,因JSP包含一个session隐含对象,所以只要page指令session属性不等于false,第一次访问该JSP都会创建一个session。
对于一个Servlet,在第一次访问该Servlet时则只有调用了request.getSession()才会创建session对象。
session的销毁:
1.直接调用HttpSession的invalidate方法。
2.服务器卸载了当前web应用。
3.超出HttpSession的过期时间:session.setMaxInactiveIntervel(5);单位为秒,默认时间为30分钟;
也可以通过web.xml文件来设置:单位为分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
URL重写:response.encodeURL()。适用于不能禁用cookie的客户端,使之仍能维持http会话。
javaWEB中的 / 到底代表着什么?
1.当前web应用的根路径
若 / 由servlet容器处理,例如以下情况:请求转发时,以及在web.xml中设置的映射路径。
2.当前站点的根路径
超链接或重定向等由浏览器处理的情况代表当前站点的根路径。
利用session防止表单重复提交,以及验证码
javaBean:必须有一个公共的、无参的构造方法。javaBean的属性是以方法定义的形式出现的。
EL表达式:
1.EL的.或[]运算符
2.EL中的隐含对象
与范围有关的隐含对象:pageScope、requestScope、sessionScope、applicationScope
与输入有关的隐含对象;param(某一个请求参数)、paramValues(某一组请求参数)
其他隐含对象;cookie、header、headerValues、initParam、pageContext
3.EL可进行自动类型转换
empty运算符;empty可以作用于一个集合,若该集合不存在或集合中没有元素,其结果都为true。
自定义标签:用户定义的一种自定义JSP标记。当一个含有自定义标签的JSP页面被编译成Servlet时,tag标签被转化成了对一个
标签处理类的对象的操作。
传统标签和简单标签
1.标签处理类
2.tld文件:标签库描述文件
3.JSP引入标签库并使用相应的标签
JSTL:JSP标准标签库
<c:out>、<c:set>、
流程控制:<c:if>、<c:choose>、<c:when>、<c:otherwise>
迭代操作:<c:ForEach>
Filter(拦截器):
public void init(FilterConfig fConfig) throws ServletException
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
public void destroy()
加载WEB应用的时候创建filter,且只创建一次。doFilter将请求传给下一个Filter,若当前Filter是Filter链的最后一个Filter,则将请求给目标
Servlet(或JSP)
dispatcher子元素:REQUEST、FORWARD、INCLUDE、ERROR...
<filter-mapping>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Listener(监听器):
专门用于对其他对象上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时立即采取相应的行动。
Servlet监听器:用于监听web应用程序的ServletContext、HttpSession、ServletRequest等域对象的创建及销毁事件,以及监听这些域对象中属性发生修改的事件。
按监听事件的类型,Servlet监听器可分为如下三种类型:
1.监听域对象自身的创建和销毁的事件监听器
2.监听域对象的属性的增加和删除的事件监听器
3.监听绑定到HttpSession域中的某个对象的状态的事件监听器
ServletContextListener(最常用的的):监听ServletContext对象的创建和销毁的Servlet监听器。经常用来完成一些web应用的初始化操作。
HttpSessionListener:
ServletRequestListener:
ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener: 监听向域对象中添加、替换、移除属性的事件监听器
以下两个监听器不需要向web.xml中注册:
HttpSessionBindingListener:如果一个javaBean实现了该接口,则将该javaBean绑定到session或从session中解除会触发相应的事件处理函数。
HttpSessionActivationListener:如果一个javaBean实现了该接口,则将该javaBean写入磁盘或从磁盘读出时会触发相应的事件处理函数。
> 活化:从磁盘中读取session对象
> 钝化:向磁盘中写入session对象
> session对象存储在tomcat服务器下work\Catalina\localhost\ContextPath目录下的 SESSION.SER
文件的上传和下载;
enctype:multipart/form-data
可借助common-fileupload组件
国际化:
DateFormat:格式化日期
NumberFormat:格式化数字、货币
Messageformat:格式化字符串
ResourceBundle(重要):
tomcat的一个web应用的目录结构
WebContent
|---WEB-INF
| |---classes
| |---lib
| |---web.xml
|---*.html *.jsp *.serverlet
在任意一个目录下部署WEB应用(在conf/catalina/localhost/下创建一个xml文件)
-------------------------------------------------------------
servlet
配置(一个servlet可以有对应多个servlet-mapping)
在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种是以/开头并以/*结尾。
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
生命周期方法:
1.构造方法:只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造函数。这说明Servlet是单实例的。
2.init方法:只被调用一次,在servlet实例被创建好以后立即被调用,用于初始化当前的servlet。
3.service方法:每次请求的时候都会被调用。
4.destroy方法:只被调用一次,当当前servlet被web应用卸载前调用。用于释放当前servlet所占用的资源。
load-on-startup参数:配置在servlet节点中,制定servlet被创建的时机。
若为负数,则在第一次被请求时被创建,若为正数或0,则在web应用在加载的时候就被创建,且数值越小越先被创建。
<load-on-startup>1</load-on-startup>
ServletConfig对象:跟<init-param>有关
ServletContext:
可以由ServletConfig获得
该对象代表web应用,可以从中获得web应用的各种信息。
可以获得web应用初始化参数
getRealPath
getContextPath
Service方法的两个参数
ServletRequest
ServletResponse
HttpServlet
--------------------------------------------------------------
JSP: java Server Page
JSP可以放置在WEB应用程序中除了WEB-INF及其子目录外的任何目录,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。
本质上是一个Servlet,每个JSP在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件。然后再由WEB容器像调用普通Servlet程序一样的方式装载和解释执行这个由JSP页面翻译成的Servlet程序
JSP的9个隐含对象;request、response、pageContext、session、application、config、out、page.还有一个叫做exception的隐含对象。
pageContext:代表页面的上下文,可以从该对象获得另外9个对象。(多用于自定义标签)
application:代表当前WEB应用,是ServletContext对象。
config:当前JSP对应的Servlet的ServletConfig对象。
page:指向当前JSP对应的Servlet对象的引用,但为Object类型(几乎不使用)。
exception;在声明了page指令"isErrorPage=true"时,才可以使用。
JSP模板元素;JSP页面中的静态html内容称之为JSP模板元素。
JSP表达式:提供了一种将java变量或表达式的结果直接输出到页面的简化方式<%= %>
JSP脚本片断:指嵌套在<% %>中的一条或多条java代码。
JSP声明:将java代码声明在<%! %>中,则在生成的Servlet里面会把相应的代码写在_jspService方法外面(基本不用)。
JSP注释:<%-- %>
属性的作用范围:pageContext request session application
请求转发:一次请求,请求的request对象为同一个对象;只能转发到内部资源;/ 代表当前WEB应用的根目录
请求重定向:两次请求,请求的request对象为两个对象;可以转发到任何资源;/ 代表当前站点的根目录
JSP指令:是为JSP引擎设计的,并不会产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令格式: <%@ 指令 属性="值" %>,在目前的JSP2.0中;page、include、taglib。
page常用属性:import、session、errorPage和isErrorPage、ContentType、isELIgnored等
也可以在web.xml中定义error页面:根据error code定义或根据异常类型定义
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<exception-type>xxx</exception-type>
<location>error.html</location>
</error-page>
如何使客户不能直接访问一个页面呢?对于Tomcat服务器而言,放在WEB-INF下的文件是不能通过在浏览器中输入URL来直接访问的。
但通过请求的转发是可以的。
include:<%@ include file="xxx" %>,叫做静态引入。
JSP include标签:<jsp:include page="xxx.jsp"></jsp:include>,动态引入。
JSP forward标签:<jsp:forward page="xxx.jsp"></jsp:forward>,可通过<jsp param >标签传入参数
JSP param标签
request.setCharacterEncoding("UTF-8");
DAO层:
1.数据库的连接(数据库连接池,jdbcUtils(通过数据库连接池获得连接和释放连接))
2.一个DAO类,实现增删改查
3.一个对应的javaBean,实现数据库到对象的映射
4.类的DAO接口和实现类
多个请求利用反射机制使用一个Servlet实现
Cookie:
如果创建一个cookie,并将它发送到浏览器,默认情况下是一个会话级别的Cookie;存储在浏览器的内存中,用户退出浏览器
之后被删除。若希望将cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将maxAge设置为0则是命令浏览器
删除该cookie。
Cookie的作用路径(path): Cookie.setPath("/");
response.add(cookie);
默认设置的cookie只作用于当前目录以及当前目录子目录,而不能作用于当前目录的父目录。
HttpSession的生命周期:
session的创建:
当客户端第一次访问WEB资源并有创建session的需要时,WEB会创建一个session对象。若已创建session对象,则不会再次创建。
对于JSP,因JSP包含一个session隐含对象,所以只要page指令session属性不等于false,第一次访问该JSP都会创建一个session。
对于一个Servlet,在第一次访问该Servlet时则只有调用了request.getSession()才会创建session对象。
session的销毁:
1.直接调用HttpSession的invalidate方法。
2.服务器卸载了当前web应用。
3.超出HttpSession的过期时间:session.setMaxInactiveIntervel(5);单位为秒,默认时间为30分钟;
也可以通过web.xml文件来设置:单位为分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
URL重写:response.encodeURL()。适用于不能禁用cookie的客户端,使之仍能维持http会话。
javaWEB中的 / 到底代表着什么?
1.当前web应用的根路径
若 / 由servlet容器处理,例如以下情况:请求转发时,以及在web.xml中设置的映射路径。
2.当前站点的根路径
超链接或重定向等由浏览器处理的情况代表当前站点的根路径。
利用session防止表单重复提交,以及验证码
javaBean:必须有一个公共的、无参的构造方法。javaBean的属性是以方法定义的形式出现的。
EL表达式:
1.EL的.或[]运算符
2.EL中的隐含对象
与范围有关的隐含对象:pageScope、requestScope、sessionScope、applicationScope
与输入有关的隐含对象;param(某一个请求参数)、paramValues(某一组请求参数)
其他隐含对象;cookie、header、headerValues、initParam、pageContext
3.EL可进行自动类型转换
empty运算符;empty可以作用于一个集合,若该集合不存在或集合中没有元素,其结果都为true。
自定义标签:用户定义的一种自定义JSP标记。当一个含有自定义标签的JSP页面被编译成Servlet时,tag标签被转化成了对一个
标签处理类的对象的操作。
传统标签和简单标签
1.标签处理类
2.tld文件:标签库描述文件
3.JSP引入标签库并使用相应的标签
JSTL:JSP标准标签库
<c:out>、<c:set>、
流程控制:<c:if>、<c:choose>、<c:when>、<c:otherwise>
迭代操作:<c:ForEach>
Filter(拦截器):
public void init(FilterConfig fConfig) throws ServletException
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
public void destroy()
加载WEB应用的时候创建filter,且只创建一次。doFilter将请求传给下一个Filter,若当前Filter是Filter链的最后一个Filter,则将请求给目标
Servlet(或JSP)
dispatcher子元素:REQUEST、FORWARD、INCLUDE、ERROR...
<filter-mapping>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Listener(监听器):
专门用于对其他对象上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时立即采取相应的行动。
Servlet监听器:用于监听web应用程序的ServletContext、HttpSession、ServletRequest等域对象的创建及销毁事件,以及监听这些域对象中属性发生修改的事件。
按监听事件的类型,Servlet监听器可分为如下三种类型:
1.监听域对象自身的创建和销毁的事件监听器
2.监听域对象的属性的增加和删除的事件监听器
3.监听绑定到HttpSession域中的某个对象的状态的事件监听器
ServletContextListener(最常用的的):监听ServletContext对象的创建和销毁的Servlet监听器。经常用来完成一些web应用的初始化操作。
HttpSessionListener:
ServletRequestListener:
ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener: 监听向域对象中添加、替换、移除属性的事件监听器
以下两个监听器不需要向web.xml中注册:
HttpSessionBindingListener:如果一个javaBean实现了该接口,则将该javaBean绑定到session或从session中解除会触发相应的事件处理函数。
HttpSessionActivationListener:如果一个javaBean实现了该接口,则将该javaBean写入磁盘或从磁盘读出时会触发相应的事件处理函数。
> 活化:从磁盘中读取session对象
> 钝化:向磁盘中写入session对象
> session对象存储在tomcat服务器下work\Catalina\localhost\ContextPath目录下的 SESSION.SER
文件的上传和下载;
enctype:multipart/form-data
可借助common-fileupload组件
国际化:
DateFormat:格式化日期
NumberFormat:格式化数字、货币
Messageformat:格式化字符串
ResourceBundle(重要):
相关文章推荐
- Java反射机制
- MyEclipse10注释字体变小的原因
- java并发编程之Semaphore
- Java-对象数组排序
- java的堆和栈
- eclipse中文注释字体太小解决方法
- Java深入浅出系列(四)——深入剖析动态代理--从静态代理到动态代理的演化
- javascipt模拟生成form表单2种提交方式
- Java中ArrayList和LinkedList区别
- Java-选择排序法
- Eclipse debug 断点不能调试 ,Eclipse Unable to install breakpoint in 解决办法
- JavaWeb学习笔记——访问静态HTML网页
- JDK,JRE,JVM区别与联系
- java并发编程之CyclicBarrier
- LeetCode84 Largest Rectangle in Histogram java题解
- Spring 3.0: Unable to locate Spring NamespaceHandler for XML schema namespace
- MAC OS设置JDK小结
- java正则表达式
- Java套接字通讯实例...【Pnoker】
- java Jackson 库操作 json 的基本演示