JSP

1.为什么使用JSP

JSP是简Servlet编写的一种技术,它将Java代码和HTML语句混合在同一文件中编写。只对页面中要动态产生的内容采用Java编写,而对静态固定不变的内容采用HTML编写。

2.JSP的helloword

1)新建JSP文件,在<body>节点中<% %>内编写Java代码即可。

2)在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素

3)JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。

4)在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%= 和 %>之中,就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号。 

5)JSP本质上就是Servlet。每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。

3.JSP页面的隐含变量

public void _jspService(HttpServletRequest request,
			HttpServletResponse response)
		throws java.io.IOException, ServletException
{
	JspFactory _jspxFactory = null;
	PageContext pageContext = null;
	HttpSession session = null;
	ServletContext application = null;
	ServletConfig config = null;
	JspWriter out = null;
	Object page = this;
	...
	...
	//使用<% %>编写代码在此位置,可以用到request,response,pageContext,session,
	//application,config,out,page八个隐含对象(实际上,还可以使用exception对象)
	
}
1)request:HttpServletRequest对象

2)response:HttpServletResponse对象(在JSP页面中几乎不会调用response的任何方法)

3)pageContext:页面的上下文,是PageContext的一个对象,可以从该对象中获取其他的八个隐含对象,亦可以从中获取到当前页面的其他信息(学习自定义标签时使用它)

4)session:代表浏览器和服务器的一次会话,是HttpSession的一个对象(后面详细学习)

5)application:代表当前WEB应用,是ServletContext的一个对象,

6)config:是当前JSP对应的Servlet的ServletConfig对象(开发时,几乎不使用)

7)out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上。换行:out.println("<br>")

8)page:指向当前JSP对应Servlet对象的引用,但为Object类型,只能调用Object类方法(几乎不使用)

9)exception:在声明了page指令的isErroPage=true时才可使用

pageContext  request  session  application(属性域返回从小到大)

4.和属性相关的方法

1)方法:

Object  getAttribute(String name):获取指定的属性

Enumeration  getAttributeNames():获取所有属性的名称

setAttribute(String name,Object o):设置指定的属性

removeAttribute(String name):移除指定的属性

2)相关对象:

pageContext  request  session  application都有上述方法。

pageContext:仅限于当前JSP页面

request:仅限于同一个请求

session:一次会话(浏览器从打开到关闭,此期间会话不失效)

application:当前WEB应用,全局的作用范围

5.请求重定向与转发

1)区别


2)具体实现方法

(1)请求转发:

request.getRequestDispatcher("/finalPage.jsp").forward(request, response);
(2)请求重定向

response.sendRedirect("finalPage.jsp");

6.JSP指令(page  include  taglib)

1)page:page指令最好是放在整个JSP页面的起始位置。 

import:导入类包

session=[true|false] : 当前JSP页面是否允许使用session

errorPage="relative_url" :如果WEB应用出现错误,将转到该属性指定的页面

isErrorPage="true | false" :页面是否可以使用exception对象

contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]:当前页面的响应编码类型

pageEncoding="characterSet | ISO-8859-1" :当前页面的编码类型

isELIgnored="true | false" :当前页面是否可以使用EL表达式,通常为true

2)inclue:include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet

(1)<%@ include file="relativeURL"%>

(2)file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。

7.JSP标签

1)<jsp:inclue>:用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。

(1)<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

(2)page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。

(3)flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。

2)<jsp:forward>:用于把请求转发给另外一个资源

(1)<jsp:forward page="relativeURL | <%=expression%>" /> :page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得

(2)RequestDispatcher.forward方法、PageContext.forward方法、<jsp:forward>标签的区别:调用RequestDispatcher.forward方法的JSP脚本代码的前后不能有JSP模版内容。调用PageContext.forward方法的JSP脚本代码的后面不能有JSP模版内容。<Jsp:forward>标签的前后都能有JSP模版内容。

3)<jsp:param>:

(1)<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>

(2)标签的name属性用于指定参数名,value属性用于指定参数值

8.中文乱码

1)在JSP页面上输入中文,请求页面后不出现乱码,保证contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%,charset和pageEncoding编码一致,且都支持中文,通常建议取值为UTF-8。还需要保证浏览器的显示的字符编码支持也和请求编码相一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值