我今天学习了javabean 知识,上课时做了简单的笔记:
1. jsp :forword 是jsp的动作指令,被forward转发的资源必须与发出请求的页面处于相同的上下文环境中。
a) 通常用于权限登录,(itcast1130jsp01/forword/login.jsp),
b) Jsp:forword 不能放在Java标签代码里,
c) 是一个转发过程,request对象的信息不丢失,
d) 用jsp:param也可以传递参数,
e) 使用格式:<jsp: forward page="file-url"|"<%=expression_r_r_r%>" />
<jsp: param name=" paramName" value="paramValue" />
</jsp: forward>
f) 运行方式等同于:
2. 复习:
a) Jsp语法结构:
i. 声明:<%! Int k; %> 是servlet里面的全局变量,不需初始化
ii. Java脚本代码,<% int k =0; %>转化为servlet后是_jspServlet()方法里面的局部变量,使用前必须初始化,
iii. Jsp表达式: <%= str%>
iv. 注释:
1. HTML注释:可以在客户端显示,转换为servlet后采用out.print输出,
2. jsp注释:不会显示在转换servlet后的源代码中,不会在浏览器中显示
3. Java注释:可以显示在转换servlet后的源代码中,不会在浏览器中显示
3. 练习:大唐电信登录:
a) Request.getContextPath获取上下文路径
4. jsp的异常处理机制:(itcast1130jsp02/webroot/exception/test.jsp);
a) 使用方法一:
i. 在可能出现异常的页面中加上<%@ page errorPage=”/exception/erroe.jsp”%>当出现错误则转到error.jsp页面,在这个页面显示友好的信息给客户,也可以打印异常信息;
ii. 在error.jsp中要使用jsp的内置对象exception,必须增加<%@ page isErrorPage=”true”%>
iii. 在另一个页面打印错误信息:exception 是jsp的内置对象,异常都封装在里面
iv. <%=exception%>
v. Errorpage是一个转发过程;
vi. 处理异常的error.jsp页面,可以放在WEB-INF目录下面
b) 使用方法二:
i. 每个页面都加比较麻烦,可以在自己的web.xml文件里面添加:
ii.
iii. 这种方法比方法一要简单;不用在每个页面添加<%@ page error=””%>标签了
iv. 这样jsp页面出现异常时,如异常类型是java.lang.Exception是则自动转到/WEB-INF/errorerror.jsp页面了。
5. jsp9种内置对象:(itcast1130jsp03/jsp9object)
a) `request对象:javax.servlet.http.HttpServletRequest
i. Request.getContextPth();获取上下文对象;
b) Response对象:
i. 每隔一秒自动刷新:
ii. 五秒后转到另一个页面:response.setHeader(“refresh”,”5;url=./test.jsp”);
c) Session对象:是用户私有的 , javax.servlet.http.HttpSession ,当page指令中的session=“true”时才可以使用session,
i. 当为flase时,不能使用内置的Session对象,但是可以自己创建一个session;HttpSession session=request.getsession();
ii. Session.setAttribute(“ueename”,”zhang”);
iii. 内置的和自己创建的是同一个Session;
d) Application对象: 所有用户共享 ,javax.servlet.ServletContext
i. 获取工作目录:
ii.
iii. 获取web.xml上下文参数:
iv.
v.
vi.
vii. 获取上下文参数:
viii.
e) Out对象:javax.servlet.jsp.jspWrieter类型,而Servlet中的out是PrintWriter类型
f) Config对象: javax.servlet.ServletConfig ,取得服务器Servlet的初始化参数;
i. out.print(“this.getServletConfig()”);
ii. jsp文件可以作为一个Servlet发布
iii.
iv. 读取jsp的配置信息;String username=config.get.InitParameter(“username”);
g) PageContext对象:javax.servlet.jsp. PageContext
i. 它封装了当前jsp页面的运行信息,它提供了返回JSP页面的其他隐式对象的方法。
ii. PageContext类中定义了一个setAttribute方法来将对象存储进pageContext对象内部的一个HashMap对象中,同时也定义了一个getAttribute方法来检索存储在该HashMap对象中的对象。
iii. PageContext类除了可以存储和检索自身中的属性对象外,还定义了可以存储和检索其他域范围内的属性对象的方法。
iv. 获取request对象:
v.
vi. 从pageContext中获取的对象和内置的对象是同一个对象,
vii.
viii. 上面方法二是利用pageContext的setAttribute方法 在request作用域设置属性,
ix.
x.
xi. pageContext。FindAttribute(“name”)依次在page request Session application作用域查找属性,如果找到 ,返回关联的值,
xii. pageContext.forward() 属于转发**************要反复练习此节课
h) 作用域:
i. Request:一次请求
ii. Session:一次会话
iii. ServletContext:整个web,所有用户共享
iv. Page在当前页面有效
6. 解决jsp中文乱码问题:
a)
i. 对于请求方法是post时,一定在使用request对象之前设置字符编码
ii.
iii. 或者用
iv.
v. 对于请求get方法时 ,要编码:
vi. 解码时,可以在conf/service.xml里面配置