jsp学习笔记

来源:互联网 发布:淘宝客优惠券怎么推广 编辑:程序博客网 时间:2024/06/05 15:49
Jsp指令:
page指令:<%@page 属性1="属性值" 属性2="属性值" 属性n="属性值"% />
注:
language=" ";
import=" ";
errorPage="exception.jsp"(表示出现异常时交给那个页面处理)
pageEncoding是Jsp文件本身的编码
contentTypt的charset是指定服务器发给客户端时的内容编码
contentType更常用
例:<%@page language="java" import="java.util.*" conteneTyoepe="text/html charset=utf-8"% />


Jsp注释:
<!--客户端可见-->
<%--客户端不可见--%>
<%//不可见 /*不可见*/%>

Jsp脚本:
<%JAVA代码%>
例:<% out.println("HELLO WORLD"); %>

Jsp声明:
<%!  %>
例:<%! 
String s = "张三";
int add(int x,int y){
return x + y;
}
%>


Jsp表达式:
<%=表达式 %> //注意:表达式不以分号结束
例:x+y=<%=add(5,10) %>

Jsp生命周期:
第一次请求Jsp页面时,首先被执行的方法是构造方法。
就是转换为class文件后,他会创建一个Servlet的实例,然后调用Servlet的构造方法,再调用jspInit()方法
(1)JSP引擎先把该JSP文件转换成一个Java源文件(Servlet),在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息。
(2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。
(3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspInit()方法被执行,jspInit()方法在Servlet的生命周期中只被执行一次。
(4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注意多线程的编程限制,由于该Servlet始终驻于内存,所以响应是非常快的。


Jsp九大内置对象:
常用:out,request,response,session,application
!常用:Page,pageContext,exception,config

表单的两种提交方式:get和post
get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2KB。安全性较低但效率比post高。适合提交数量不大,安全性不高的数据。例如:搜索,查询等功能。
post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。例如:注册、修改、上传等功能。


request对象:客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应。它是HttpServletRequest类的实例。request具有请求域,即完成客户端的要求之前,该对象一直有效。
常用的方法:
String getParameter(String name)返回name指定参数的参数值
String []getParameterValue(String name)返回包含参数name的所有值的数组
void setAttribute(String,Object);存储此请求的属性
object getAttribute(String name)返回指定属性的属性值
String getContentType()得到请求体的MIME类型
String getProtocol()返回请求用的协议类型以及版本号
String getServerName()返回接受请求的服务器主机名
request getRequesDispatcher()请求转发;


response对象:(很少直接用到它)
PrintWrite getWriter()返回可以向客户端输出字符的一个对象
注意:总是优先于内置out对象输出,可将out.flush();放于PrintWrite之前以解决其优先于out输出的问题
response.sendRedirect();请求重定向

***请求转发和请求重定向的区别:
请求重定向:客户端行为,response.sendRedirect();本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL会改变
请求转发:服务器行为,request.getRequesDispatcher().forward(request,response);是一次请求,转发后请求对象会保存,地址栏URL不会变。


Session对象:在第一个JSP页面被装载时自动创建,完成会话期管理,在服务器保存用户信息。
常用方法:
long getCreationTime();返回session的创建时间
public String getId();返回session创建时jsp引擎为它设的唯一ID号
public Object setAttribute(String name,Object value);使用指定名称将对象绑定到此会话
public Object getAttribute(String name);返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
String[] getValueNames();返回一个包含此session中所有可用属性的数组
int getMaxInactiveInterval();返回两次请求间隔多长时间此session被取消(单位秒)
int setMaxInactiveInterval();设置两次请求的间隔时长


application对象:实现了用户数据的共享,可存放全局变量;开始于服务器的启动,终止与服务器的关闭;在用户的前后连接或不同用户之间的链接中,可对application对象的同一属性进行操作
常用方法:
public void setAttribute(String name,Object value)使用指定名称将对象绑定到此会话
public Object getAttribute(String name)返回与此对话中的指定名称绑定在一起的对象,如果没有绑定则返回null
Enumeration getAttributeNames() 返回所有可用属性名的枚举
String getServerInfo() 返回JSP(SERVLET)引擎名及版本号


JavaBean:
<jsp:setProperty>:
给javabean对象的属性赋值,有四种方式:
<jsp:setProperty name="javabean对象名" property="*" /> (跟表单关联,从表单中获取对应属性的值)
<jsp:setProperty name="javabean对象名" property="javabean对象属性名" /> (跟表单关联,从表单中获取某个指定属性的值)
<jsp:setProperty name="javabean对象名" property="javabean对象属性名" value="属性的值" /> (手工设置属性的值)
<jsp:setProperty name="javabean对象名" property="javabean对象属性名" param="request对象中的参数名" /> (通过上一个请求中的request参数获取)
<jsp:getProperty>:
作用:获取指定Javabean对象的属性值
<jsp:getProperty name="JavaBean实例名" property="属性名" />

Cookie:是服务器保存在客户端的一些关于用户的文本信息。
方法:
void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
void setValue(String value) 在cookie创建后,对cookie进行赋值
String getName(String value)获取cookie的名称
String getValue(String value) 获取cookie的值
int getMaxAge(String value)获取cookie的有效时间,一秒为单位

session和cookie的对比:
session            cookie
在服务器保存用户信息 在客户端保存信息
保存的是Object(对象)类型保存String类型(对保存对象的大小是有限制的)
随会话的结束将储存的数据销毁可以长期保存在客户端
保存重要信息 保存不重要的用户信息

include指令和include动作比较:
include指令(适用于页面不常变)jsp:include动作(适用于页面经常变化)
语法 <%@include file=""%><jsp:include page="">
作用时间 页面转换期间请求期间
包含内容 文件实际内容页面输出
转换成Servlet 主页面和包含页面转换为一个Servlet 主页面和包含页面转换为独立的Servlet
编译时间 较慢-资源必须被解析较快
执行时间 稍快较慢-每次资源必须被解析
0 0
原创粉丝点击