Java Web
2016-07-10 18:09
295 查看
JSP
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。
标签通常以<%开头以%>结束。
生命周期
编译阶段:
servlet容器编译servlet源文件,生成servlet类
初始化阶段:
加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
init()只执行一次。
执行阶段:
调用与JSP对应的servlet实例的服务方法
每个客户端请求对应一个线程
以多线程方式执行可以大大降低对系统的资源需求,但需注意同步问题
销毁阶段:
调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
页面元素
脚本
Scriptlet元素
语法
<% java语句 %>
功能
Scriptlet中可以包含有效的程序片段,只要是合乎Java本身的标准语法即可。
Expression元素
语法
<%= expression %>
功能
JSP提供了一种简单方法访问可用的Java变量和Java表达式,并生成页面HTML字符串。
Declaration元素
语法
<%! declaration; %>
功能
在JSP程序中声明变量、方法和类。
指令
page
page指令定义了一些属性,通知关于JSP页面一般设置的Servlet引擎的属性。
include
include指令的作用为在此脚本执行前将另一JSP文件插入在此位置一起执行,包含的文件如果发生了变化,必须重新将JSP文件编译为Servlet文件才能看到所包含文件修改后的结果。
taglib
使用标签库定义新的自定义标签,在JSP页面中启动定制行为。
动作
jsp:include
<jsp:include page="URL" flush="true" />
include动作在执行时才对包含的文件进行处理,如果对包含的文件进行了修改,那么运行时可以看到所包含文件修改后的结果。
jsp:forward
<jsp:forward page="URL" />
终止当前页面的动作并将请求转发到另一个资源。相当于
request.getRequestDispatcher("URL").forward(request, response);
jsp:param
<jsp:param name="参数名" value="参数值" />
jsp:plugin
根据浏览器的类型,插入通过Java插件运行Java Applet所必须的OBJECT和EMBED元素。
执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它.
jsp:useBean
<jsp:useBean id="标识符" class="全类名 scope="作用域"
jsp:setProperty
<jsp:setProperty name="标识符" property="Bean属性名" value="Bean值"
jsp:getProperty
<jsp:getProperty name="标识符" property="属性名"/>
内置对象
request
客户端的请求信息封装在request对象中,通过它才能了解到客户的需求,然后做出响应
它是HttpServletRequest类的实例。
request对象具有请求域,即完成客户端的请求之前,该对象一直有效。
response
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
response对象具有页面作用域,即访问一个页面时,该页面内的response对象只对这次访问有效,其它页面的response对象对当前页面无效。
session
session对象是一个JSP内置对象。
session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,到关闭浏览器离开这个服务器结束,被称为一个会话。
当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是同一个客户,那需要session对象。
session对象是HttpSession类的实例。
application
application对象实现了用户间数据的共享,可存放全局变量。
application开始于服务器的启动,终止于服务器的关闭(生命周期)。
在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作。
在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。
out
JspWriter类的实例,是向客户端输出内容常用的对象。
page
page对象就是指向当前JSP页面本身,有点像类中的this指针
pageContext
pageContext对象提供了对JSP页面内所有对象及名字空间的访问。
pageContext对象可以访问到本页面所在的session,也可以获取本页面所在的application的某一属性值。
pageContext对象相当于页面的中所有功能的集大成者。
pageContext对象的本类名也叫PageContext。
exception
exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。
如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。
它实际上是java.lang.Throwable的对象。
config
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
状态管理
Session
在服务器储存用户信息
session中保存的是Object类型
随会话的结束而将其存储的数据销毁
保存重要信息
Cookie
Web服务器保存在客户端的一系列文本信息.
cookie保存的是String类型
cookie可以长期保存在客户端
保存不重要的用户信息
分页
步骤:
先取总记录数,得到总页数,再取所有的记录,最后显示本页的数据。
Servlet
Servlet是在服务器上运行的小程序. 一个Servlet就是一个Java类, 并且可以通过” 请求-响应 “编程模型来访问这个驻留在服务器内存里的Servlet程序.生命周期
服务器调用时创建.
或者调用
<load-on-startup></load-on-startup>启动
常驻于内存
服务器关闭调用destroy()
web.xml
v2.3
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app>
v2.4
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> </web-app>
v2.5
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> </web-app>
v3.0
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> </web-app>
结构
// Servlet继承关系 public interface Servlet // 与协议无关的Servlet public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable // 实现了HTTP协议 public abstract class HttpServlet extends GenericServlet // @WebServlet("/MyServlet") public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; public MyServlet() { } public void init(ServletConfig config) throws ServletException { public void destroy() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
配置
web.xml
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>jsp.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping>
URL地址
protocal://ip:port/MyServlet
资源地址
protocal://ip:port/jsp/servlet/MyServlet
Filter
WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。生命周期
创建和销毁由WEB服务器负责。
在应用启动的时候就进行装载Filter类(与Servlet的load-on-startup配置效果相同)。
容器创建好Filter对象实例后,调用init()方法。接着被Web容器保存进应用级的集合容器中去了等待着,用户访问资源。
Filter对象常驻留Web容器
作用
用户权限验证
解决中文乱码
过滤敏感词汇
压缩响应信息
MyFilter.java
// @WebFilter("/MyFilter") public class MyFilter implements Filter { public MyFilter() { } public void destroy() { // Web容器关闭时前调用该方法,这个方法中可以释放过滤器占用的资源(大多数情况用不到). } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { /* * 当用户请求访问与这个过滤器关联的URL时,Web容器先调用过滤器的doFilter(). * FilterChain参数可以调用 * chain.doFilter(),将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发到其他资源. */ chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { // 初始化方法,Web容器创建过滤器后将调用这个方法. // 这个方法可以读取web.xml文件中的过滤参数. } }
web.xml
<filter> <filter-name>MyFilter</filter-name> <filter-class>jsp/filter/MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Listener
Servlet规范中定义的一种特殊类可以在事件发生前, 发生后做一些必要的处理
主要用途
与Spring结合
系统启动时加载初始化信息
统计网站访问量
统计在线人数和在线用户
web.xml 版本
Servlet 2.3<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Servlet 2.3 Web Application</display-name> </web-app>
Servlet 2.4
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Servlet 2.4 Web Application</display-name> </web-app>
Servlet 2.5
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Servlet 2.5 Web Application</display-name> </web-app>
Servlet 3.0
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Servlet 3.0 Web Application</display-name> </web-app>
Servlet 3.1
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> </web-app>
相关文章推荐
- springIOC总结
- java文件读写操作大全
- Java Web学习(4):徒手开发Web应用程序
- JDK并发编程1
- Spring常用的接口和类(三)
- Spring常用的接口和类(二)
- Spring常用的接口和类(一)
- JavaWeb概述(三)状态跟踪
- JavaEE学习笔记之Servlet/JSP—EL表达式
- JAVA经典算法40题
- jdk1.6 改 jdk1.7或jdk1.8(改回也可以)
- Executor框架-Executors
- MyEclipse *的安装步骤和破解(32位和64位皆适用)
- 用两个栈实现队列
- MyEclipse *的下载
- Java隐式类型转换
- spring + springMVC + spring Data + jpa + maven 项目框架搭建
- JVM内存区域划分 EDEN SPACE、SURVIVOR SPACE、TENURED GEN
- SpringMVC注解
- Java虚拟机体系结构分析