0x01 jsp的指令标签
<%@page %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等。
<%@include%> 包含其他文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
<%@taglib%> 引入标签库的定义。
0x02 jsp的动作标签
与存取javabean有关(3只)
<jsp:usebean> 加载一个将在JSP页面中使用的JavaBean。
<jsp:setProperty> 设置已经实例化的Bean对象的属性
第一种:
用法:
<jsp:usebean id="myName" />
.....
<jsp:setProperty name="myName" property="someProperty" value="someValue"/>
不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行
第二种:
用法:
<jsp:usebean id="myName">
<jsp:setProperty name="myName" property="someProperty" value="someValue .../>
</jsp:usebean>
jsp:setProperty只有在新建Bean实例时才会执行,如果是使用现有实例则不执行jsp:setProperty。
name和property是必须的,前者选择要用哪个bean,一般是usebean的id属性,后者表示是要设置的变量名。
<jsp:getProperty>获取Bean的属性的值并将之转化为一个字符串,将其插入到页面中
<jsp:getProperty name="someName" property="someProperty">
基本动作元素(6只)
<jsp:include> 包含静态和动态的文件。 插入文件的时间是在页面被请求的时候。
<jsp:include file="xx.jsp" flush="true">
<jsp:forward> 把请求转到另外的页面。
<jsp:forward page="相对 URL 地址" />
<jsp:plugin>用来在JSP中嵌入Java插件
<jsp:plugin>
type="bean | applet"
name="Applet名称"
code="java类名"
codebase="Java类所在目录"
align="对齐方式"
height="高度"
width="宽度"
hspace="水平间距"
vspace="垂直间距"
archive="预先加载的类列表"
jreversion="JRE版本"
iepluginurl="URL"
nspluginurl="URL"
</jsp:plugin>
<jsp:param><jsp:params>
<jsp:plugin>
<jsp:params>
<jsp:param name="参数名" value="参数值" />
</jsp:params>
</jsp:plugin>
<jsp:fallback>用来指定当浏览器不支持或者无法启动Bean或Applet时,在页面上打印输出错误提示信息。
<jsp:plugin>
<jsp:fallback>
错误信息
</jsp:fallback>
</jsp:plugin>
与JSP Document相关(6只)
<jsp:root>
<jsp:declaration>
<jsp:scriptlet>
<jsp:expression>
<jsp:text>
<jsp:output>
与动态生成XML标签有关(3只)
<jsp:attribute>
<jsp:body>
<jsp:element>
与Tag File有关(2只)
<jsp:invoke>
<jsp:dobody>
0x03 jsp内置对象
request对象
来自客户端的请求,经过servlet容器处理后,由request对象进行封装
javax.servlet.http.HttpServletRequest类的实例
request.getParameter(key) 获取表单提交的相应key的值 (<% String name = request.getParameter("name");>)
request.getParameterValue(key) 获取表单提交的一组数据 (<% String[] names = request.getParameterValue("names");>)
request.getHeaderNames() 获取http请求头的信息
request.setAttribute(key.object) 设置请求对象的属性
request.getAttribute(key) 获取请求对象的属性
request.setCharacterEncoding("UTF-8") 对请求数据重新编码(解决post中文乱码问题,get不行)
request.getContentType() 获取请求体的MIME类型
request.getProtocol() 获取协议类型和版本类型
request.getServerName() 获取服务器主机名
request.getServerPort() 获取服务器端口号
request.getContentLength() 获取请求文件的长度
request.getRemoteAddr() 获取请求体的IP地址(xff不能伪装)
request.getRealPath("request.jsp") 获取请求文件的绝对路径
request.getContextPath() 获取请求的上下文路径
response对象
封装了JSP响应,将响应发送回客户端
javax.servlet.http.HttpServletResponse类的实例
response.setContentType("text/plain;charset=utf-8") 设置响应的MIME类型
request.getRequestDispatcher("request.jsp").forward(request, response) 请求转发
response.sendRedirect("xx.jsp") 页面跳转,与之前的forward不同,这个是跳转
response.setCharaterEncoding("gbk") 设置响应的编码
session对象
表示一个会话,用来保存用户的信息,以便跟踪用户,存在服务端,直到关闭网站或者注销账户,可以在浏览器浏览器之间切换,共享数据
作用域:session
javax.servlet.http.HttpSession类的实例
session.getid() 获取session的id号,该id号由tomcat自动分配
session.isnew() 判断session是否是新建的
session.setAttribute(key.object) 往当前会话中设置属性
session.getAttribute(key) 从当前会话中得到属性
session.removeAttribute(key) 从当前会话中删除一个属性
session.setMaxInactiveInterval(1000*60*30) 设置当前会话的失效时间,tomcat默认30分钟
session.invalidate() 初始化一个会话,删除会话
cookie对象
cookie对象不是jsp的内置对象,需要构造,不过因为跟session很相似,就放在这边说了。
Cookie[] cookies = request.getCookie();
String getName() 返回cookie的名字
String getValue() 返回cookie的值
接受Cookie
Cookie[] cookies = request.getCookie();
for (int i = 0; i <= cookies.length; i++){
if ("username".equals(cookies[i].getName()))
username = cookies[i].getValue();
if ("password".equals(cookies[i].getName()))
password = cookies[i].getValue();
}
创建Cookie
Cookie nameCookie = new Cookie("username", name);
nameCookie.setMaxAge(60*60*24*30); 设置cookie生存周期
Cookie pwdCookie = new Cookie("password", pwd);
pwdCookie.setMaxAge(60*60*24*30);
response.addCookie(nameCookie); 添加cookie
response.addCookie(pwdCookie);
application对象
用户间数据的共享,全局变量
javax.servlet.ServletContext类的实例,代表着整个jsp页面
application.setAttribute(key.object)
application.getAttribute(key)
application.removeAttribute(key)
实例:
<%
application.setAttribute("city", "北京");
application.setAttribute("postcode", "10000");
application.setAttribute("email", "123@123.com");
%>
所在城市:<%= application.getAttribute("city")%><br />
application的属性有:
<%
Enumeration attributes = applicaiton.getAttributeNames();
while(attribute.hasMoreElements())
out.println(attributes.nextElement()+" ");
%>
<br />
JSP(SERVLET)引擎名以及版本号:<%= application.getServerInfo()%>
config对象
javax.servlet.ServletConfig类的实例,这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。
page对象 这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。page 对象就是this对象的同义词。
page context对象
exception对象
out对象
javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
作用域:page,也就是说每个page都有一个out对象
out.print() 输出
out.println() 输出后换行
out.flush() 刷新输出流
out.write() 输出
0x04 javabeans
javabeans就是符合某种特性的java类,减少代码重复
创建javabeans实例
放到src的com.po包中:
package com.po;
/**
* 用户类
**/
public class Users(){
private String username;
Private String password;
//保留次构造方法
public User(){
}
public String getUsername(){
return username;
}
public setUsername(String username){
this.username = username;
}
public String getPassword(){
return password;
}
public setPassword(password){
this.password = password;
}
}
使用javabeans实例
<%@page import="com.po.Users"%>
<%
Users user = new Users();
user.setUsername("admin");
user.setPassword("123456");
%>
用户名:<%= user.getUsername()%>
密码:<%= user.getPassword()%>
网友评论