javaweb - jsp

1. 基本元素

  • 1.jsp注释:是对web服务器的注释

 

  • 2.声明:(不要忘记加分好)

定义成员变量或方法
<%! ; %>     <%! private String name; %>


<% String name="bob"; %>   方法级别代码

    <%!
      //成员变量,成员方法
      private String name;
      public void fun(){
          
      }
    %>
    <%
      //局部变量
      String name = "中国";
      out.print(name);
      fun();
    %>
  <%=this.name%>
  <%= 表达式 %>

 

  • 3.表达式:(动态的输出信息)不要加分号

<%= %>
e.g <%= name %>

  • 4.脚本元素(scriptlet)

<% Java代码 %>
e.g
<%
String name="bob";
for(int i=0;i<5;i++){
System.out.print("");
}
%>

  • 5.配置欢迎界面:web.xml

<welcome-file-list>
<welcome-file>
index.jsp(添加)
</welcome-file>
</welcome-file-list>

  • 6.引入tomcat服务器

new-server-add

  • 7.include指令

可以在一个jsp页面中包含另一个jsp页面,而且这两个页面的代码是共有的,
因此这两个jsp页面里的脚本不能重复定变量

在开发中,如果一些jsp页面要用到一个jsp页面的功能,比较适合采用该指令
例如,系统有很多模块,每个模块又有很多jsp,每个jsp都要验证用户的权限,权限验证就可以做成一个jsp

  • 8.page指令:用来定义页面的全局属性,如页面的编码方式、语言等

为页面引用额外的类包引用时
<%@ page import="java.sql.Statement" %>

此外,我们为页面指定脚本语言时,也会用到该指令,包含汉字 通常使用utf-9或GBK编码

作用域:
整个jsp页面和使用include包含进来的jsp页面---整个jsp页面和这些被包含文件被称为“平移单元”

 

 2. 作用域,生命周期,原理

e.g 

<%
    int a = 10;
%>
<%=a%>
<%!
    private int a = 100;
    public void fun(){
        
    }
%>
<%=this.a++ %>

 

  不断刷新页面,发现访问的是同一个jsp对象。a被加一

  当jsp内容发生变化,再次请求时,会被重新翻译成.java文件,并且编译成.class文件。下次访问的jsp[servlet]其实是同一个对象。一般情况下,第一次访问jsp文件比较慢

  jsp实例化过程:

  • 访问jsp文件
  • 服务器将jsp翻译成.java文件
  • 编译成.class文件
  • 实例化对象
  • 调用service方法
  • 响应浏览器

  servlet原理与此类似

 

3.jsp三大指令标签

  指令标签:<%@ 指令名 prop1="" prop2="" %>

  3.1 page指令

  • 指定jsp页面  【后台编码】
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  • 导包   
    <%@ page import="java.io.FileInputStream,java.util.*,.." %>
  • errorPage,isErrorPage  
    error.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %> <html> <head> <title>Error</title> </head> <body> 这是错误信息 </body> </html>

     errorPage:如果页面中出现错误,则跳转【转发】到指定的错误页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/error.jsp" %>
    返回的状态码为500

 使用web.xml配置errorPage:  

    
<!-- 发生500错误 -->
  <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> <!--发生运行时异常,就转发到xxx--> <error-page> <exception-type>java.lang.RuntimeException</exception-type> <location>/error.jsp</location> </error-page>

 

  • autoFlush : true | false  用于指定当输出流满了后,是否自动输出 【基本不用】
  • buffer : 8Kb  【基本不用指定】
  • extends:用于指定jsp继承的父类,【基本不用】
  • isELIgnored :默认为false
  • session:是否使用session
  • isThreadSave:指定当前jsp是否为线程安全,默认为false【支持并发访问,基本废弃】

 

 

3.2 include指令 

  静态包含:相当于将file中的文件直接放在该位置,include指令告诉容器:复制被包含文件汇总的所有内容,再把它粘贴到这个文件中【注意web容器采用读取文件的访问将被include的内容读取,读取时是根据被include的文件的pageEncoding编码来读取的,然后将整个内容整合成一个java文件,因此需要在该文件中设置编码】

<body>
<%@ include file="included.jsp" %>
<div class="div1">
</div>
<%@ include file="included.jsp" %>
</body>

 

  静态包含:jsp在被编译之前已经合并成了一个jsp,然后在被编译成一个.class文件

  

注意:<jsp:include page = "">  这是动态包含

  

 

3.3 tablib:引入标签库

  格式:<%@ taglib prefix="" uri="" %>

  使用时要加上前缀。

  URI:用于指定标签库的位置。

  使用jstl:

  • 导入jar包:jstl.jar,stardard.jar
  • <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

 

 

 

 

 

 end

posted @ 2018-09-07 14:24  fight139  阅读(211)  评论(0编辑  收藏  举报