JSP简介

来源:互联网 发布:网络性能测试包括什么 编辑:程序博客网 时间:2024/06/04 18:21

1.JSP的基础语法

1、是<%%>来包围的代码都是java代码这里写图片描述
2、对于jsp而言,默认定义了一下一些重要的内置对象
·out—->PrintWriter(resp.getWriter())
由于out对象使用较多,所以有如下一种替换方式,直接在html中通过<%=xx%>完成out的使用
·request—>HttpServletRequest
·session—->HttpSession
·application—->ServletContext
·response —–>HttpServletResponse

2.JSP的运行原理

对于所有的jsp而言,它都会被转换为servlet来执行,只是这个转换的过程由Tomcat服务器完成,我们可以通过work目录来查询相应的代码
所以JSP的页面在第一次运行时会相对比较慢,因为要完成JSP-Servlet的转换。

3.重定向

See also: scope范围对象
有两种方式
1、response.sendRedirect("02.jsp");
这种方式属于客户端跳转,在浏览器的地址栏显示的是跳转后的地址
传递参数可以直接在地址后使用?xxx=xxx来传递,但是中文传递不了
特别注意:如果要使用客户端跳转一定要在sendRedirect之后使用return;
2、<jsp:forward page="02.jsp"></jsp:forward>
属于服务器端跳转,该种跳转在客户端的浏览器上依然会显示原有的地址
传递参数的方式在标签中加入jsp:param标签,注意也不支持中文传递

<jsp:forward page="02.jsp">    <jsp:param value="张三" name="username"/>  </jsp:forward>

4.scope范围对象

有如下一些对象可以直接通过相应的方法来传递基于对象的参数
pageContext
request
session
application
以上对象中均有setAttribute(String,Object)
能用pageContext就不用request,能用request就不用session,能用session就不用application
request对象
作用域范围
1、当前页面可以存储数据
2、客户端跳转无法存储数据
3、服务器端跳转可以存储数据
总体来说使用request传递数据仅仅支持在服务器端跳转
pageContext对象
作用域范围
1、在当前页面attribute的值存在
2、客户端跳转attribute作用域的值丢失
3、服务器端跳转值会丢失
session对象
1、当前页面有数据
2、客服端跳转有数据
3、服务器端跳转有数据
只有在重新启动浏览器之后数据才会丢失,可以使用session很方便的实现购物车和用户登录检测
对于session的数据而言可以使用session.invalidate()来结束session
session.removeAttribute(),来移除session中的数据

application对象
只有在重启服务器数据才会丢失,计数器

5.路径问题

相对路径
相对于当前文件夹来设置路径,其中..表示上一级目录

<a href="../../02/2.jsp">Link To 02</a>

以上代码表示访问当前文件夹的上一级文件夹的上一级文件夹中的02文件夹中的2.jsp
建议不要使用相对路径
绝对路径
根据整个网站的根目录来确定绝对路径,使用/来指明根目录
特别注意,在java中,/表示的不带有上下文路径,所以需要使用request.getContextPath()来获取上下文路径。

<a href="<%=request.getContextPath() %>/01/1.jsp">Link To 01</a>

在开发过程一般都是使用绝对路径。

6.包含

有两种包含方式:
<%@include file="/inc/header.jsp" %>
以上包含属于静态包含,直接把整个文件包含进来,在包含前不做任何处理
这里写图片描述
2 ·<jsp:include page="/inc/header.jsp"></jsp:include>
在包含之前会先对这个动态文件进行编译,之后把编译的结果以静态文件的形式包含进来。
这里写图片描述
最佳实践:建议使用动态包含
注意:在包含文件时可以直接使用绝对路径,系统会自动加上上下文路径