JavaBeans就是符合某种特定的规范的java类,使用Javabeans的优点是解决代码反复编写,
降低代码冗余,功能区分明白,提高了代码的维护性
JSP动作元素
JSP动作元素,动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包括元素名
的開始标签,能够有属性、可选的内容、与開始标签匹配的结束标签。
jsp动作标签
<jsp:useBeans>
作用:在jsp页面中实例化或者在指定范围内使用javabean:
<jsp:useBean id = "标识符" class = "java类名" scope = “作用范围”/>
<jsp:setProperty>
作用:给已经实例化的JavaBean对象的属性赋值,一共同拥有四种形式
<jsp:getProperty>
作用:获取指定JavaBean对象的属性值
Javabean的四个作用域范围
说明:使用useBeans的scope属性能够用来指定javabean的作用范围
page 仅在当前页面有效
request 能够通过HttpRequest.getAttribute()方法取得javaBean对象
session 能够通过HttpSession.getAttribute()方法取得JavaBean对象
application 能够通过application.getAttribute()方法取得javabean对象
JSP状态管理
http协议的无状态性
无状态是指,当浏览器发送请求给server的时候,server响应client请求。
可是当同一个浏览器再次发送请求给server的时候,server并不知道它就是
刚才那个浏览器
简单的说。就是server不会去记得你。所以就是无状态协议
保存用户状态的两大机制
Session、Cookie
Cookie是Webserver保存在client的一系列文本
Cookie的作用
对特定对象的追踪
保存用户网页浏览记录与习惯
简化登录
安全风险:很easy泄露用户的信息
JSP中Cookie的使用
创建: Cookie newCookie = new Cookie(String key,Object value);
写入: response.addCookie(newCookie);
读取: Cookie[] cookies = request.getCookies();
经常用法
void setMaxAge(int expiry) 设置cookie的有效期,秒为单位
void setValue(String value) 在cookie创建后。对cookie进行赋值
String getName() 获取cookie的名称
String getValue() 获取cookie的值
int getMaxAge() 获取cookie的有效时间。秒为单位
案例:
<% request.setCharacterEncoding("utf-8"); String[] isUseCookies = request.getParameterValues("isUseCookie"); if(isUseCookies!=null&&isUseCookies.length>0){ //这样做能够解决cookie中不能保存中文的问题 String username = URLEncoder.encode(request.getParameter("username"),"utf-8"); String password = URLEncoder.encode(request.getParameter("password"),"utf-8"); Cookie usernameCookie = new Cookie("username",username); Cookie passwordCookie = new Cookie("password",password); usernameCookie.setMaxAge(864000); passwordCookie.setMaxAge(864000); response.addCookie(usernameCookie); response.addCookie(passwordCookie); }else{ Cookie[] cookies = request.getCookies(); if(cookies != null &&cookies.length > 0){ for(Cookie c : cookie){ if(c.getName().equals("username")||c.getName().equals("password")){ c.setMaxAge(0); response.addCookie(c); } } } } %>
Session与Cookie的对照
session在server端保存用户信息
cookie在client保存用户信息
session中保存的是Object类型
cookie中保存的是String类型
session会随会话的结束而将其存储的数据销毁
cookie能够长期保存在client
session经常使用于保存重要的信息
cookie保存不重要的用户信息
指令与动作
include指令
语法:<%@include file="URL"%>
forward动作
<jsp:forward page="URL"/>
等同于
request.getRequestDispatcher("/url").forward(request,response);
param动作
<jsp:param name="參数名" value="參数值">
经常与<jsp:forward>一起使用,作为其的子标签