JSP

一、JSP的定义 JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。 1.1 JSP的生命周期 编译阶段: servlet容器编译servlet源文件,生成servlet类 初始化阶段: 加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法 执行阶段: 调用与JSP对应的servlet实例的服务方法 销毁阶段: 调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例 JSP生命周期代码实例如下所示: <%@ page contentType="text/html; charset=GB2312"%> <html> <head> <title>life.jsp</title> </head> <body> <%!private int initVar = 0; private int serviceVar = 0; private int destroyVar = 0;%> <%!public void jspInit() { initVar++; System.out.println("jspInit(): JSP被初始化了" + initVar + "次"); } public void jspDestroy() { destroyVar++; System.out.println("jspDestroy(): JSP被销毁了" + destroyVar + "次"); }%> <% serviceVar++; System....

June 3, 2018 · 2 min · sunbufu

JSTL表达式与EL表达式

一 什么是 EL 语言。 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语音。 二 EL 语言的作用。 为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript和XPath表达式语言,它提供了在JSP中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性) 嵌套属性和对集合 操作符(算术型 关系型和逻辑型)的访问符 映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 三 使用 EL 语言前的配置。 1 导入standard.jar。 2 在需要使用 EL 语言的页面加上<%@ page isELIgnored="false" %>。 注意 <%@ page isELIgnored=“true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0默认的启用EL语言。 3 对于整个JSP应用程序,要修改WEB.XML配置(tomcat5.0.16默认是支持EL的) <jsp-property-group> <description> For config the ICW sample application </description> <display-name>JSPConfiguration </display-name> <url-pattern>/jsp/datareset.jsp </url-pattern> <el-ignored>true< / el-ignored> < / el-ignored> <page-encoding>UTF-8</page-encoding> <scripting-invalid>true</scripting-invalid> <include-prelude>/jsp/prelude.jspf</include-prelude> <include-coda>/jsp/coda.jspf</include-coda> </jsp-property-group> 四 如何使用 EL 表达式。 4....

June 3, 2018 · 6 min · sunbufu

Servlet过滤器和监听器

一、过滤器 实现javax.servlet.Filter接口; 一般客户端发出请求后会交给Servlet;如果过滤器存在,则客户端发出的请求都是先交给过滤器,然后交给Servlet; 我们可以完成一些在执行Servlet之前必须要做的事,比如request.setCharacterEncoding("UTF-8"); 必须实现以下方法: public void init(FilterConfig config) throws ServletException{} public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain){} public void destroy(){} 注意: init方法在Web容器初始化时就会调用; doFilter的参数是ServletRequest和ServletResponse而不是Http的; FilterChain含有public void doFilter(ServletRequest req,ServletResponse resp){} 一般代码形式如下: public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain){ chain.doFilter(req,resp);//执行Servlet操作; } 则这个函数会调用两次,一次是执行chain.doFilter之前,一次是执行chain.doFilter()之后; 写完过滤器后,我们必须要限制过滤器调用的范围,即域名为多少时会调用过滤器,我们在web.xml 中进行配置; <filter> <filter-name></filter-name> <filter-class></filter-class> </filter> <filter-mapping> <filter-name></filter-name> <url-pattern></url-pattern> <!--过滤器应用的范围,如果为/*,则如果域名设置形如/a 或/abc等都会调用过滤器--> </filter-mapping> 二、监听器 监听器的作用类似于Swing中的监听器的作用,效果也差不多,即当某个事件发生时,就触发了某个设置好的监听器,这里监听器能监听application、session、request对象。 写好监听器类后需要配置web.xml,形式如下: <listener> <listener-class></listener-class> </listener> 1.application监听器:ServletContextListener 需要实现的方法: public void contextInitialized(ServletContextEvent e); //在web容器初始化是就调用 public void contextDestroyed(ServletContextEvent e); //当web容器销毁时调用 ServletContextEvent含有getServletContext()方法取得application对象; 2....

June 3, 2018 · 1 min · sunbufu

Servlet

一、什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 Servlet的三个特点 Servlet就是JAVA类 Servlet是一个继承HttpServlet类的类 在服务器端运行,用以处理客户端的请求 二、Servlet相关包的介绍 javax.servlet.* :存放与HTTP 协议无关的一般性Servlet 类; javax.servlet.http.*:除了继承javax.servlet.*之外,并且还增加与HTTP协议有关的功能。(注意:大家有必要学习一下HTTP协议,因为WEB开发都会涉及到) 所有的Servlet 都必须实现javax.servlet.Servlet 接口(Interface)。 若Servlet程序和HTTP协议无关,那么必须继承javax.servlet.GenericServlet类; 若Servlet程序和HTTP协议有关,那么必须继承javax.servlet.http.HttpServlet 类。 HttpServlet :提供了一个抽象类用来创建Http Servlet。 public void doGet()方法:用来处理客户端发出的 GET 请求 public void doPost()方法:用来处理 POST请求 还有几个方法大家自己去查阅API帮助文件 javax.servlet包的接口: ServletConfig接口:在初始化的过程中由Servlet容器使用 ServletContext接口:定义Servlet用于获取来自其容器的信息的方法 ServletRequest接口:向服务器请求信息 ServletResponse接口:响应客户端请求 Filter接口: javax.servlet包的类: ServletInputStream类:用于从客户端读取二进制数据 ServletOutputStream类:用于将二进制数据发送到客户端 javax.servlet.http包的接口: HttpServletRequest接口:提供Http请求信息 HttpServletResponse接口:提供Http响应 三、Servlet生命周期 Servlet生命周期就是指创建Servlet实例后,存在的时间以及何时销毁的整个过程. Servlet生命周期有三个方法 init()方法: service()方法:Dispatches client requests to the protected service method destroy()方法:Called by the servlet container to indicate to a servlet that the servlet is being taken out of service....

June 2, 2018 · 1 min · sunbufu

Servlet分析Request和Response

分析Request import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Interface * servlet容器(服务器)创建了这个对象,和服务器耦合性高 * 为了让解析请求信息更加的方便 * 行 * 头 * 网 * 体 */ public class HiServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取请求行信息 getRequestLine(request); //获取请求头信息 getRequestHeader(request); //获取网络信息信息 getRequestNet(request); //获取请求体信息 getRequestBody(request); } /** * 获取请求行信息 * @param request */ private void getRequestLine(HttpServletRequest request) { System....

June 2, 2018 · 2 min · sunbufu