JSP
B/S构架中,浏览器端与服务器端采用请求/响应模式进行交互,这个过程可分解为如下步骤: (1) 客户端接受用户输入,发送对系统的访问请求 (2) 客户端向应用服务器发送请求,等待服务器响应 (3) 数据处理 (4) 发送响应 Jsp执行过程:
(1) 翻译阶段(转换成java源码):当web服务器接收到jsp请求时,首先会对jsp文件
进行翻译,将翻译好的jsp文件通过引擎转换成可识别的java源码
(2) 编译阶段(编译源文件为字节码文件);将java源文件编译成可执行的字节码文件。 (3) 执行阶段(生成可执行的二进制字节码文件);将生成的页面返回到客户端 Jsp指令元素:
page指令:通过设置多个属性来定义jsp文件中的全局变量 注:page指令只能对当前自身页面进行设置 语法:
<%@ page 属性1=”属性值1” 属性2=”属性值2” 属性3=”属性值3”?? > Jsp脚本元素:表达式(express)、小脚本(scriptlet)、声明(declaration)的统称 小脚本:<%%>标记
表达式:<%=java表达式%>
声明:<%! Declaration;[Declaration;]??%>
Jsp内置对象:当编写jsp页面时,不需做任何声明就可以直接使用的对象
out:用于向客户端输出数据,常用方法是print(),这个方法在页面中打印字符串信息
例:<%
out.print(“你好!”); %>
request:包含有关浏览器请求信息,主要用于处理客户端请求
常用方法:
getParameter();此方法可以获得上一页面所提交的参数值
getParameterValues()获取到一个数组,这个数组中存储的就是所有选中的复选项对应的值 setCharacterEncoding()设置编码
JSP数据交互
response:用于响应客户请求并向客户端输出信息 常用方法:
addCookie(Cookie cookie)在客户端添加Cookie
setContentType(String type)设置HTTP响应的contentType类型 setCharacterEncoding(String character)设置编码
sedRedirect(String path)将请求重新定位到一个不同的URL上 转发与重定向:
转发:使用getRequestDispatcher()方法实现 重定向:使用sedRedirect(String path)
对比:
转发和重定向有什么区别:
转发和重定向都能实现页面跳转,不同之处表现在一下几方面: 重定向过程:
Web服务器向浏览器发送一个新的http请求,浏览器接受此响应后在发送一个新的http请求到服务器,服务器根据此请求寻找资源并发送给浏览器。它可以重定向到任意URL,不能共享request范围内的数据。
重定向是在客户端发挥作用,通过请求新的地址实现页面转向。
重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址。 转发过程:
Web服务器调用内部的方法在容器内部完成请求和转发动作,将目标资源发送给浏览器,它只能在同一个Web应用中使用,可以共享request范围内的数据。
转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。 转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显出转向后的地址。 重定向的应用
使用超链接进行数据传递时,采用的事get方式提交请求,如果传递数据中存在中文,使用request对象直接获取获取时,容易产生乱码问题,因此,需要对数据进行重新编码。
由于使用request对象获取的数据类型均是String类型,因而可以使用String对象的方法实现数据重新编码。 语法:
new String(需要编码的数据.getBytes(“ISO-8859-1”),”GBK”);
状态管理 cookie
cookie的作用:
(1) 对特定对象的追踪,如访问者访问次数,最后访问时间,路径等 (2) 统计网页浏览次数
(3) 在cookie有效期内,记录用户登录信息
(4) 实现各种个性胡服务,如针对不同用户喜好以不同的风格展示不同的内容 在jsp中使用cookie
1. 使用page指令导入类javax.servlet.http.cookie
<%@page import=”javax.servlet.http.cookie”%> 2. 创建cookie对象
Cookie newCookie = new Cookie(String key,Object value) 3. 写入cookie
reponse.addCookie(newCookie) cookie对象常用方法:
setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
setValue (String value) 在cookie创建时,为cookie赋予新的值 getName() 获取cookie的名称 getValue() 获取cookie的值 getMaxAge() 获取cookie的有效时间,以秒为单位
4. 读取cookie
例: <% Cookie[] cookies = request.getCookies(); String user = “”; String pwd = “”; If(cookies!=null){ for(int i =0;i user = cookie[i].getValue(); }else if(cookies[i].getName().equals(“password”)){ pwd = cookies[i].getValue(); } } } %> cookie的有效期 使用setMaxValue(int expiry)时,有以下几种情况 (1) 通常情况下expiry参数应为大于0的整数,表示cookie的有效存活时间 (2) 如果设置expiry参数等于0,表示删除cookie (3) 设置expiry参数为-1或者不设置,表示cookie会在当前窗口关闭后失效 JSP内置对象session 回话:用户通过浏览器与服务器之间进行的一次通话 session对象: session机制: session机制是一种服务端的机制,在服务器端使用类似于散列表的结构来保存信息,当程序接收到客户端的请求时,服务器首先会检查这个客户端是否已经创建了session。判断session是否创建是通过一个唯一的标示sessionid来实现的,如果在客户端请求中包含了一个sessionid,则说明在此之前已经为客户端创建了session,服务器就会根据这个sessionid将对应的session读取出来。否则,就会重新创建一个新的session,并生成一个与此session对应的sessionid,然后将sessionid在本次响应的过程返回到客户端保护。 问答: session会返回到客户端,那么在客户端sessionid会保存在什么位置呢? 答:在客户端保存用户信息使用的是cookie,因此保存sessionid的方法也是使用cookie来实现。在客户端的cookie中,保存sessionid的名称类似于SESSIONID,而sessionid的值也是一串复杂字符串,例如jsessionid=2A11D30C7B32329D7C8BF16DC598C509,其中jsessionid就是sessionid的名称,后面的字符串就是分配的sessionid对应的值 使用session对象实现权限控制 session对象的常用方法 setAttribute(String key,String value) 以key,value的形式保存对象值 gettAttribute(String key) 通过key获取对象值 invalidate() 设置session对象失效 getId() 获取session Id setMaxInactiveInterval(int interval) 设置session的非活动时间 getMaxInactiveInterval() 获取session的有效非活动时间,以秒为单位 session对象和浏览器的关系: 每个session对象都与浏览器一一对应,也就是说,重新开启一个浏览器窗口,相当于重新创建一个session对象。 session和cookie的对比: (1)session是在服务器端保存用户信息,cookie是在客户端保存用户信息 (2)session中保存的是对象,cookie保存的是字符串 (3)session对象随回话结束而关闭,cookie可以长期保存在客户端 (4)cookie通常用于保存不重要的用户信息,重要的信息使用session保存 JSP内置对象Application Application对象类似于系统的“全局变量”,用于实现用户之间的数据共享,且只有一个实例。 application的常用方法: setAttribute(String key,Object value) 以key/value的形式保存对象值 getAttribute(String key) 通过key获取对象值 getRealPath(String path) 返回相对路径的真实路径 JSP常用的内置对象一览表: out 用于向客户端输出数据 request 主要用于客户端的请求处理 response 用于响应客户请求并向客户端输出信息 session 用于存储有关用户会话的所有信息 application 类似于系统的全局变量,用于实现用户之间的数据共享 JSP其他内置对象: pageContext 提供访问其他隐含对象的方法 pageContext对象的常用方法: getRequest(): 获得request对象 getResponse(): 获得response对象 getSession(): 获得session对象 getOut(): 获得out对象 setAttribute(): 保存属性 getAttribute(): 获得属性 include(): 包含其主页面在pageContext对象中保存的属性,只能值当前页面中获取 page 表示当前页面。类似于java中的this config 用于存放JSP编译后的初始数据 exception 表示JSP对象运行时产生的异常,该对象只能在错误页面(page指令中设定isErrorPage为true的页面)中才能使用 对象的范围 page范围: 单一JSP页面范围,page范围内的对象只能在创建对象的页面中访问。在page范围呢可以使用pageContext对象的setAttribute()和getAttribute()方法来访问具有这种范围类型的对象。page范围内的对象在客户端每次请求JSP页面时创建,在服务器发送响应或请求转发到其他的页面或资源后失效。 request对象范围 request对象在页面转发或包含中有效。在该范围内的对象同样可以通过调用request对象的setAttribute()与getAttribute()方法找到,同时在调用forward()方法转向的页面或者调用include()方法包含的页面时,都可以访问request范围内的对象。 session对象范围 JSP容器为每一次会话创建一个session对象,在回话期间,只要将对象绑定到session中,对象的范围就为session。在回话有效期间,都可以访问session范围内的对象。 application对象范围 当服务器启动后就会产生一个application对象,被所有用户所共享。所有的对象都可以访问application范围内的对象 JSP应用优化 数据库连接池 JSP开发业务应用 分页显示: 1. 确定每页显示数据数量 2. 计算显示页数 (1) 获取数据库中的数据 public int getCount(){ String sql = “select count(*) cnt from news”; int count = 0; //略 If(rs.next()){ count = rs.getInt(); } return count; } (2) 计算总共需要划分为多少页 public int getTotalPage(int count,int pageSize){ int totalpage = 0; totalpage = (count%pageSize == 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库使用jsp+servlet+ajax技术在线全文阅读。
相关推荐: