发表于: 2018-04-26 01:18:13
1 748
今天完成的事情:
·报名活动
·学习jsp
jsp结构和生命周期
生命周期:
编译——初始化——执行——销毁
当浏览器请求jsp页面的时候,jsp引擎会检查是否需要编译,如果这个文件没有被编译那么就会编译源文件jsp,转为servlet类(解析jsp,转为servlet,再编译servlet);然后加载jsp对应的servlet实例,调用它的初始化方法;初始化后jsp引擎会调用_jspService()方法,它需要一个HttpServletRequest和一个HttpServletResponse对象作为参数,然后再执行实例里面的方法,最后是不再需要的时候执行清理jspDestroy(),比如需要清理数据库连接,执行关闭等方法。
jsp结构:
·JSP标签/标记/表达式等
·普通HTML标签和CSS、JS标签
·java/js方法或变量
简单的页面:
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>页首</title>
<%--<link rel="stylesheet" type="text/css" href="WEB-INF/lib/bootstrap/css/bootstrap.css"/>--%>
<%--<script type="text/javascript" src="WEB-INF/lib/bootstrap/js/bootstrap.js"></script>--%>
<%--<script src="https://code.jquery.com/jquery.js"></script>--%>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script>
function submitName() {
nt.getElementById("form").sumit();
}
</script>
</head>
<body>
<h2>测试页面</h2>
</body>
</html>
用<% 代码片段 %>表示jsp语法
其它的html和css,js略过了,主要学习了jsp的基本方法和结构
主要JSP结构:
JSP编译指令(三大指令,涉及整个页面相关的属性)
<%@ page ... %> 定义页面的属性,比如依赖、语言、缓存需求等,比如import/session/errot/info/contentType等
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ include ... %> 定义/包含 其它文件资源等
<%@include file="header.html"%><!--静态包含-->
<%@ taglib ... %> 定义标签库,嵌入需要的标签库,也可以是自定义的。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
这三大指令基本上是必备的,比较重要。
JSP动作指令(七大动作):
1.include 动态引入,页面被请求的时候引入一个页面/文件,可以带参数,适合包含动态页面。dlush表示页面可刷新,默认值是false。
<jsp: include page="included.jsp" flush="true" />
2.forward 跳转,执行页面转向,把请求转到另外一个页面,可以带参数。
<jsp:forward page="Relative URL" />
3.param 传参 上面两个页面传参就是通过它来传递
<jsp:include page="转向页面的url" >
<jsp:param name="参数名1" value="参数值1">
<jsp:param name="参数名2" value="参数值2">
...........
</jsp:include>
或:
<jsp:forward page="转向页面的url" >
<jsp:param name="参数名1" value="参数值1">
<jsp:param name="参数名2" value="参数值2">
...........
</jsp:forward>
4.useBean 创建Bean,创建一个Bean实例 scope作用域默认为当前页面
<jsp:useBean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)"/>
5.getProperty 取值,从上面的useBean创建的bean中取,name为上面定义的id
<jsp:getProperty name="javaBean对象" property="javaBean对象属性名" />
6.setProperty 设置值,同上面类似
<jsp:setProperty name="javaBean对象" property="javaBean对象属性名" value="值"/>
7.plugin 指定在客户端运行的插件,或者说是用于下载javaBean或者Java Applet(小程序)到客户端执行,可以用param传递参数
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" width="60" height="80">
<jsp:param name="fontcolor" value="red" />
<jsp:param name="background" value="black" />
<jsp:fallback>
无法初始化插件
</jsp:fallback>
</jsp:plugin>
其它动作指令:
jsp:element / jsp:attribute / jsp:body
用来定义动态xml,xml是动态生成而不是静态的
<jsp:element name="xmlElement">
<jsp:attribute name="xml属性名">
属性值
</jsp:attribute>
<jsp:body>
XML 的 body
</jsp:body>
</jsp:element>
这样执行的时候就动态会生成下面的xml
<xmlElement xml属性名="属性值">
XML 的 body
</xmlElement>
jsp:text
允许在jsp页面和文档中写入文本的模板
<jsp:text>内容</jsp:text>
这里面内容不能包含其它元素,只能使用文本和EL表达式,比如
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]/>
</jsp:text>
JSP隐式/内置对象(九大对象)
这些隐式对象是jsp为每个页面预制的变量,不用声明,可以直接拿来使用(如果有值的话)
1.request
HttpServletRequest类的实例,代表请求对象,接收客户端的http请求。
常用方法比如request.getParameterValues()获取值
getParameter(String)
getParameterNames()
getParameterMap()
getRequestURL()
getQueryString()
getHeader(string name)等;
常用方法:https://wenku.baidu.com/view/5cf4b8f6534de518964bcf84b9d528ea81c72f12.html
2.response
HttpServletResponse类的实例,封装了jsp的一次响应,发送到客户端以响应客户端的请求,可以重定向到任意页面
常用方法:https://wenku.baidu.com/view/843071a74693daef5ef73deb.html?from=search
3.out
PrintWriter类的实例,向客户端输出字节流,用于把结果输出至网页上,相当于out.print();
4.session
HttpSession类的实例,相当于缓存。保存用户信息,跟踪用户行为,浏览器内共享。生命周期从建立一直到客户端和服务器断开连接。
常用的方法有getAttribute(String attName),setAttribute(String attName,String attValue)等
5.application
ServletContext类的实例,与应用上下文有关,存放全局变量,从服务器开启一直持续到服务器关闭。信息被所有用户共享,任何对它的操作都会影响到其它用户对它的访问
常用方法有getAttribute(String attName), setAttribute(String attName,String attValue)和getInitParameter(String Param)等
6.config
ServletConfig类的实例,对应servlet的配置,能得到web.xml中的初始化参数
比如getServletConfig().getInitParameter("name")等
7.pageContext
PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问。
8.page
当前页面本身,就是页面实例的引用,类似于Java类中的this关键字。
常用的有getClass()方法 equals()方法 clone()方法等
9.Exception
Exception类的对象,包装了发生错误的JSP页面中对应的异常对象信息,用它来对出错的条件进行响应
常用的方法有getMessage()和printStackTrace()等
session,application的区别:
session:主要保存频繁使用的用户信息,比如登录、权限资源等等。session只有一个,只要同一个浏览器不关闭,它就一直存在。默认如果长时间不发送请求它也会自动消失,这个时间可以在服务器端设置:
session.setMaxInactiveInterval(10000) 单位秒
application:同session一样,只不过是作用域要广很多,是公有数据,所有对象公用。而且生命周期直到服务器关闭。多个浏览器使用的是一个application。
明天计划的事情:
·jsp指令
·json格式和它的转换
·外出采购
遇到的问题和收获:
*jsp的请求数据清楚了很多,最主要的就是HttpServletRequest对象和HttpServletResponse对象。
*jsp的内置对象和生命周期
评论