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

http

一、TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示: 从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下: 其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下: 二、HTTP协议 2.1 简介 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统。 HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。 HTTP 的第一版本 HTTP/0.9是一种简单的用于网络间原始数据传输的协议; HTTP/1.0由 RFC 1945 定义 ,在原 HTTP/0.9 的基础上,有了进一步的改进,允许消息以类 MIME 信息格式存 在,包括请求/响应范式中的已传输数据和修饰符等方面的信息; HTTP/1.1(RFC2616) 的要求更加严格以确保服务的可靠性,增强了在HTTP/1.0 没有充分考虑到分层代理服务器、高速缓冲存储器、持久连接需求或虚拟主机等方面的效能; 安全增强版的 HTTP (即S-HTTP或HTTPS),则是HTTP协议与安全套接口层(SSL)的结合,使HTTP的协议数据在传输过程中更加安全。 2.2 协议结构 HTTP协议格式也比较简单,格式如下: 2.3 HTTP 协议举例 下面是一个HTTP请求及响应的例子: 2.4 请求头格式 a) 通用头(general-header): Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0"; Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", “Connection: keep-alive"; Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段; Pragma:包含了客户端一些特殊请求信息,如 “Pragma: no-cache” 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据; Via:一般用在代理网关向应用服务器发送的请求头中,表明该来自客户端的请求经过了网关代理, 格式为:"Via: 请求协议版本 网关标识 [其它信息] ", 如 :” Via: 1....

June 2, 2018 · 3 min · sunbufu

java下的cookie和session

Session是一种服务器端技术, Session 对象在服务器端创建,通常采用散列表来存储信息,例如, Tomcat 的 Session 实现采用 HashMap 对象来存储属性名和属性值。 Cookie是由 Netscape 公司发明的、用于跟踪用户会话的一种方式。 Cookie 是由服务器发送给客户的片段信息,存储在客户端浏览器的内存中或硬盘上,在客户随后对该服务器的请求中发回它。 Cookie小结 Cookie在服务端创建 Cookie cookie = new Cookie(name,value); Cookie保存在浏览器端 response.addCookie(cookie); Cookie的生命周期和上传路径均可指定。 Cookie cookie = new Cookie("mykey", "myvalue");//新建cookie cookie.setMaxAge(60 * 60 * 24);//设置cookie的生命周期是一天 cookie.setPath(req.getContextPath() + "/cookie.action");//只有在访问/cookie.action时才会上传 resp.addCookie(cookie);//添加cookie Cookie可以被多个浏览器共享 一个web应用可以保存多个cookie(放置在同一个文件内部) ,最多不要超过20个,每个Cookie的大小限制为4kB,因此Cookie不会塞满你的硬盘更不会被作为"拒绝服务"的攻击手段。浏览器一般保存的Cookie不会超过300个 Cookie存放中文,出现的乱码问题 //存放 String val = java.net.URLEncoder.encode("中文名称","utf-8"); Cookie cookie = new Cookie("name","val"); //读出 String val = java.net.URLDecoder.decode(cookie.getValue("name"),"utf-8"); out.println("name="+val) session小结: Session是存放在服务器的内存中 HttpSession session = req....

June 2, 2018 · 1 min · sunbufu