您的位置:首页 > 编程语言 > Java开发

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: