美文网首页
【JSP】jsp学习笔记

【JSP】jsp学习笔记

作者: Pino_HD | 来源:发表于2017-10-21 20:57 被阅读0次

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()+"&nbsp;&nbsp;");
%>
<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()%>

相关文章

网友评论

      本文标题:【JSP】jsp学习笔记

      本文链接:https://www.haomeiwen.com/subject/hxibrxtx.html