发表于: 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-8language="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的内置对象和生命周期







返回列表 返回列表
评论

    分享到