JSP简介

简介:

JSP全名为Java Server Pages,中文名为Java服务器页面,是一种简化的Servlet设计,诸多公司参与建立的一种动态网页技术.
JSP与Servlet一样,是在服务器端执行的,通常返回给客户的就是一个HTML文本,因此客户只要有浏览器就能够浏览.
注:jsp页面在WebContent下才能通过浏览器访问,如果在WEB-INF下则需要通过服务器代码访问.

1.JSP,Servlet,html比较

servlet:
缺点:不适合设置html响应体,需要大量的response.getWriter().print(“html”)
优点:动态资源,可以编辑
html:
缺点:html是静态页面,不能包含动态信息
优点:不用为输出html标签而发愁
jsp:
优点:在原有html的基础上添加java脚本,构成jsp页面

2.jsp和servlet的分工

jsp作为请求发起页面,和接受响应显示页面
servlet作为请求的处理数据环节

3.jsp组成

jsp是由html+java脚本+jsp标签(指令)构成
jsp由九大内置对象:
jsp的三种脚本:
<% … %>:java代码片段,可以定义多条java语句,相当于在servlet的service方法中定义局部变量.
<%= … %>:java表达式,用于输出一条表达式或变量的结果
<%! … %>:声明,用来创建类的成员变量和成员方法(不常用)
<% … %>相当于定义方法内的变量,可以在多个<%%>中公用,<%!%>相当于定义类的成员变量,可在多种脚本中使用,如果<%%>和<%!%>中定义了相同的变量名,那么引用的是<%%>中的变量,如果要引用<%!%>定义的成员变量,可以通过this.变量名来访问成员变量.

:jsp中的注释,翻译为java的时候被忽略掉了

4.jsp原理

jsp其实是一种特殊的servlet
当jsp页面第一次被访问的时候,服务器会把jsp变编译成java文件(其实是一个servlet类)
然后在把java文件编译成.class文件
然后创建该类的对象
最后调用它的service方法
第二次请求同一个jsp的时候,直接调用service方法.
可在tomcat的work目录找到jsp对应的java源文件.

5.jsp和serlvet对应关系

jsp中元素都会在out.wirte()中以字符串的形式存在
<%…%>中内容原封不动的在service中出现,需要符合java语法
<%=…%>中会以放入到out.println()中,以变量的形式输出
<%!..%>中声明的变量和方法,在servlet中以成员变量和方法出现
<%–… -->注释被忽略掉.但是html的注释会被输出,但是浏览器不显示
out.write()和out.println()是相同的功能.

abc->在servlet的service方法中表示out.write(“abc”);
<% int a=10 %>---->表示serice方法中int a=10;
<%! public void say(){} %>表示在servlet中定义一个方法say
<%= a %> ----->表示service方法中out.print(a);无双引号
jsp中每个标签在servlet的service方法中都是out.write("")形式存在.

6.JSP简单操作

*JSP中各种脚本的使用
<% int a=3;%>:相当于在servelt中service方法中定义局部变量,但是多个<%%>脚本之间可引用
<%! int a=6; %>:相当定义在servlet定义成员变量
<%= a %>:引用变量,优先使用局部变量,值3
<%= this.a %>:引用成员变量,值6
*JSP的循环遍历操作:

<% for(int i=0;i<10;i++){ %>
<tr>
	<td>张三</td>
	<td>33</td>
</tr>
<% } %>

会在jsp转化的servlet类中以下面形式转化.

for(int i=0;i<10;i++){
	out.write("<tr>);
	out.write("<td>张三</td>")
	...
}

7.JSP九大内置对象:在JSP中无需创建即可使用

  1. out(JspWriter):等同于response.getWriter(),用来向客户端发送文本数据;
  2. config(ServletConfig):对应Servletconfig
  3. page(当前JSP的真身类型):当前JSP页面中的this,即当前对象,在编译后的servlet文件中包含Object page=this;
  4. pageContext:页面上下文对象,一个顶九个
  5. exception(Throwable):只有在错误页面中可以使用这个对象
  6. request(HttpServletRequest):即HttpServletRequest请求对象
  7. response(HttpServletResponse):即HttpServletResponse响应对象
  8. application(ServletContext):即ServletContext对象
  9. session(HttpSession):即HttpSession对象,默认每个页面都可以使用,除非页面设置<@page session=“false”%>

这九个对象很多是极少被使用的,如page,config,exception基本不用
这九个对象有两个对象不是每个JSP都可以使用:exception,session

8.PageContext:一个顶九个

servlet中有三大域:servletContext,session,request
jsp中有四大域,servletContext,session,request,pageContext

  • jsp域对象作用范围
    servletContext:整个项目的上下文
    session:整个会话
    request:一个请求链
    pageContext:一个页面上下文,常用在和当前页面标签中共享数据
  • PageContext功能:
    作为一个域对象,jsp中独有,可以设置获取删除属性
    • 代理其他域对象功能
      pageContext.setAttribute(“xxx”,“xxx”,PageContext.SESSION_SCOPE):往指定域中增加或修改属性
      pageContext.getAttribute(“xxx”,PageContext.SESSION_SCOPE):得到指定域的属性值
      pageContext.removeAttribute(“xxx”,PageContext.SESSION_SCOPE):删除指定域的属性
    • 获取其他8个个内置对象
      pageContext.getServletConfig()
      pageContext.getSession()
    • 获取属性
      pageContext.getAttribute(“xxx”),全域查找,可以获取pageContext,request,session,servletContext中的属性,多个域有相同属性名的属性,获取值的优先级逐渐降低.

9.JSP动作标签

  • jsp的动作标签和html的标签是有区别的.
    动作标签是有tomcat来解释执行的,它与java代码一样,都是在服务端执行
    html标签由浏览器进行执行.
  • 常用jsp动作标签
    jsp:forward:转发,与RequestDispatcher的forward()功能一样,但是标签是在jsp中使用,方法是在servlet中使用
    jsp:include:包含,动态包含,与RequestDispatcher的include()功能一样,但是标签是在jsp中使用,方法是在servlet中使用
  • 还有其他的jsp动作标签不介绍
  • jsp:include%@include区别
    jsp:include是动态包含,多个jsp分开编译,是多个java执行,只是内容响应进行包含
    %@include是静态包含,多个jsp会被编译成一个文件进行执行
    jsp:param:用来作为forward和include的字标签,用来给转发或者包含提供参数.
发布了20 篇原创文章 · 获赞 0 · 访问量 296
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览