《JSP相关


    动态页面:是指网页内容随着用户或计算机程序提供的参数变化而变化的HTML。是实时生成的。
HTML、CSS、JS都是静态页面,而JSP、servlet是动态页面,可以实现验证用户名是否存在、用户名与密码是否匹配的功能。

Java Web是用Java技术来解决相关web互联网领域的技术总称。
需要再特定的web服务器上运行,分为web服务器和web客户端两部分。
跨平台,能够再多个不同平台下部署运行。

    需要会那些技术
基于页面的前端技术,如HTML、CSS、JavaScript等。
动态语言技术,如Java、JSP等。( JSP是Java API家族中的一部分。)
数据库的技术,如Oracle、MySQL、SQL server等。
其他工具与组件,如服务器、SSM、SSH框架等。

    Java Web应用场景一:淘宝
2004年,淘宝PHP语言转换为Java语言。
    Java Web应用场景二:12306
1、高并发  2、数据量大  3、软件与硬件成本高
    还有亚马逊、携程都采用javaweb

    JSP简介
JSP全名为Java server Pages,中文名叫Java服务器页面,其根本是是要给简化的servlet设计。

JSP是在传统的网页HTML文件中插入Java程序段(Scriptlet)JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
    另:JSP允许扩展JSP标签(后面的课程中会介绍)

    第一个JSP程序
完整的JSP程序
JSP程序的执行过程
JSP程序声明周期

注意:如果此处不配置target runtime(即指定tomcat服务器),则需要查看教辅——《第一个JSP程序—需要导入servlet-api.jar》,按教辅新建并运行项目。

    动态项目的结构

Java Resources  包含项目的Java源代码
WebContent    所有Web资源(包括HTML、JSP、和图形文件等等)的指定位置。
    WEB-INF   对于Web应用程序,此目录包含支持的Web资源,包含web.xml文件以及classes和lib目录。
        /classes:Java编译器产生的类文件输出目录。应用程序类载入器使用此目录中的类来转载运行时所需要的功能。
        /lib:包含Web应用程序所引用的支持性JAR文件,是综合的资源文件目录。
        web.xml:标准Web应用程序部署描述符。是一个项目核心配置文件。

    JSP程序的执行过程
          |———请求—>——JSP页面文件(.jsp文件)        
客户端(Web浏览器)|          Servlet代码(Java文件)    
          |          编译后的字节码(.class文件)    
          |——<—响应———字节码程序处理客户请求    
    注:在调试JSP的时候,如果程序出错,JSP服务器会返回出错信息,并在浏览器显示,
    这时由于JSP是先被转换成.java文件(Servlet)后再运行的,所以,浏览器中显示的代
    码出错的行数并不是JSP源代码的行数,而是指转换后的.java文件(Servlet)中程序代码的行数。


        JSP基本语法

一、JSP声明语法
二、JSP程序脚本
三、JSP脚本注释
四、JSP内容输出表达式
五、包引入语法

一、JSP声明语法    (  <%! %>和<% %>  可以出现多次。)
    语法格式: <%!   String str= "hello world";   %>
    定义成员变量,以及成员方法
    不能直接包含程序语句
<body>
    <%!  String str="hello world";  String getStr(){return "hello world2";}   %>  定义成员变量、成员方法
    <hr>
    <%  out.println(this.str);  %>    JSP的脚本
    <hr>
    <%=this.getStr()  %>    JSP的内容输出表达式,输出的变量名称不需要带分号;
</body>

    另——以下为交叉式的JSP写法 (  <%! %>和<% %>  可以出现多次。)
<%!  if(i>10) {  %>
<span>  i>10  </span>    出现与HTML的标签交替式设计。
<%!  }  %>


    另——区别 关于 全局变量 和 局部变量
<%!  int totalCount=0;  %>     //全局变量  用<%!  %>
<%  int localCount=0;     //局部变量 (脚本变量)  <%  %>
        totalCount ++;
        localCount ++;
%>
<%  out.println(totalCount);    //成员变量,每次刷新访问都会运行导致+1,
        out.println("<br>");    
        out.println(localCount);    //局部变量,每次刷新都会重置。
%>

二、JSP程序脚本     //脚本变量、代码块的声明,用  <%  %>
    包括变量的声明、表达式和程序逻辑
    声明的变量为_service方法中的变量,因而是局部变量
    语句块可以自由地与页面代码组合使用
<%  int i=100;  %>
<%  if(i>10){  %>
    <h1>这里是页面文本:i<10   </h1>   //不必直接写out.println("i<10");
<%  }else{  %>
    <h1>这里是页面文本:i<=10  </h1>
<%  }  %>
    

    JSP页面的基本结构           ------来自《JSP动态网站项目化教程》郑铁的2013年书。。
    1、HTML标记:用来创建用户界面,实现数据的输入和展示。
    2、注释:包括HTML注释、JSP注释和脚本注释    <%--   --%>既可以用来注释JSP脚本代码,又可以注释JSP代码。
    3、声明变量、方法和对象,在“<%!”和“  %>”之间声明
    4、表达式(),在“<%= ”和“  %>”之间定义
    5、Java代码块(),在标记“<%”和“  %>”之间定义。用来实现逻辑运算
    6、JSP标记:用来控制页面属性。它包括  指令(Directive)标记,在“<%@”和“%>”之间定义;
                动作(Action)标记,在“<jsp:  ”和“>”之间定义;      和自定义标记

    5、在JSP中,代码块的英文名称是Scriptlet。我们知道,在Java中,let指的是小应用程序,如applet指运行与客户端的小程序,Servlet指服务器的小程序,而Scriptlet指的是嵌套在JSP页面中的、使用Java语言编写的小程序。
        可以在“<%”和“%>”标记符之间包含多个Java语句,构成Java代码块。
    注:在<%!...%>之间定义的变量其作用范围均为全局的,而在<%...%>中定义的变量其作用范围均为局部的。
    /★★注意:要特别说明的是:在<%  %>代码块中,绝对不允许在其中定义方法,只能定义变量和写执行代码。
    ★★为什么会有这种情况呢?其实也很好理解,JSP为<%  %>中的变量针对每个用户分配一块空间,而方法则是使用相同的内存空间,因此才不允许将方法写入此中。
        Java代码块可以和页面的静态元素组合在一起生成动态页面。其主要功能如下:
    (1)声明将要用到的变量(特别强调一下,在这里只能声明变量,不能声明方法)。
    (2)编写JSP表达式。
    (3)编写JSP语句,使用Java语言,必须遵从Java语言规范。
    (4)使用任何隐含的对象和任何用<jsp:useBean>声明过的对象
    (5)填写任何文本和HTML标记。
          ★★为什么会有这种情况呢?其实也很好理解,JSP为<%  %>中的变量针对每个用户分配一块空间,而方法则是使用相同的内存空间,因此才不允许将方法写入此中。

    书 4.2  JSP中的多线程同步  P59
    当一个用户操作某个成员变量的时候,不允许其他用户操作同一个成员变量。
    可以在操作成员变量的方法前加上关键字synchronized。    当A线程调用带关键字synchronized的方法时,如果B线程也要调用该方法,必须等到A线程结束,B线程才能调用,这样可以保证数据的一致性。

    书 4.3  JSP中中文乱码的问题  P60
        要想解决乱码问题,就要告诉浏览器我们到底使用了什么样的编码方法。具体方法有4种:
    (1)指定浏览器编码方式。  

可解决常量形式的中文乱码问题,但是仍然不能解决赋值形式的乱码问题,例如表单数据的提交等。
    (2)在http的响应(response)中添加编码信息,使用如下方式:
          <%@page  contentType="text/html;  charset=GBK"%>  或者 
          <%@page  contentType="text/html;  charset=gb2312"%>   
     //需要放在JSP页面的第一行,这样浏览器就可以从响应中获得编码格式了。
        另外,还需要在HTML中指定一下编码格式:
    <head>
        <meta  http-equiv="Content-Type"  content="text/html; charset=gb2312"  />
        <title>title</title>   //注:<meta>部分要放在head标签中的最前面,尤其是title标签中有中文的情况下。
    </head>
    (3)输入文字采用ISO-8859-1编码。
        ISO-8859-1对ASC码进行了扩展,使用8位二进制表示一个字符,正好一个字节,数据库中一般用的也是ISO-8859-1字符集存储数据,Java程序在处理字符时默认采用统一的(体现Java国际化思想)
        <%    String str=request.getParameter("");
            byte a[]=stat.getBytes(“ISO-8859-1”);        //输入文字采用你ISO-8859-1编码
            str=new String(a);
        %>
    (4)调用Request对象的色图Character Encoding方法。
        该方法是比较常见的方式,其效果跟方法3相同,但使用较为方便。
        但此方法必须在request.getParameter()方法前使用,即在该方法前编写如下语句:
    <%  request.setCharacterEncoding("GBK");%>

    书4.4   JSP标记

    1、JSP指令标记  以“<%@”开始,以“%>”结束。include和page指令是两个常用的JSP指令。
        page指令用来定义整个JSP页面的各种属性。指令中,处理import属性外,每个属性只能定义一次。区分大小写。
        include指令可以在JSP页面该指令出现的位置静态嵌入一个文件,包含的过程是静态的,包含的文件可以是JSP、HTML、文本或Java程序。
            所谓静态包含是指用被插入的文件内容代替该指令标签,与当前JSP文件合并并生成新的JSP页面后,再由JSP引擎转译为Java文件。   <%   include  file="文件URL"  %>
    页面指令page –页面指令有以下几个选项:
import        使一个JAVA导入声明被插入到最终页面文件。
contentType    规定了生成内容的类型。当生成非HTML内容或者当前字符集character set并非默认字符集时使用。
errorPage        处理HTTP请求时,如果出现异常则显示该错误提示信息页面。
isErrorPage    如果设置为TRUE,则表示当前文件是一个错误提示页面。
isThreadSafe    表示最终生成的servlet是否安全线程(threadsafe)。
    2、JSP动作标记
    JSP动作    JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。JSP提供了以下动作:
jsp:include    和子过程类似,JAVA SERVLET暂时接管对其它指定的JSP页的请求和响应。当处理完该JSP页后就马上把控制权交还当前JSP页。这样JSP代码就可以在多个JSP页中共享而不用复制。
jsp:param        可以在jsp:include, jsp:forward或jsp:params块之间使用。指定一个将加入请求的当前参数组中的参数。
jsp:forward    用于处理对另一个JSP或SERVLET的请求和响应。控制权永远不会交还给当前JSP页。
jsp:plugin        Netscape Navigator的老版本和Internet Explorer使用不同的标签以嵌入一个applet。这个动作产生为嵌入一个APPLET所需要的指定浏览器标签。
jsp:fallback    如果浏览器不支持APPLETS则会显示的内容。
jsp:getProperty    从指定的JavaBean中获取一个属性值。
jsp:setProperty    在指定的JavaBean中设置一个属性值。
jsp:useBean    创建或者复用一个JavaBean变量到JSP页。

        1、param动作标签  该标签经常与jsp:include、jsp:forward、jsp:plugin一起使用,将param标签中的变量值传递给动态加载的文件。
        2、include动作标签    该标签的作用是当前JSP页面动态包含一个文件,即将当前JSP页面、被包含的文件各自独立转译和编译为字节码文件。
            当前JSP页面执行到该标签处时,才加载执行被包含文件的字节码。
        (1)include 动作指令使用格式。include动作指令的语法格式如下:
        <jsp:inilude page=" 文件的URL”flush="true|false"/>    或:
         <jsp:include page="文件的URL”flush="true|false"/> 
            <jsp:param name="参数名1” value="参 数值1"  />
            <jsp:param name="参数名2” value="参数值2"  />
        </jsp:include>
             注意:如果不使用param标记传递参致,要使用第一种格式,
                如果需要传递参数,可以使用第二种格式,也可以使用第一种格式, 但是在“文件的URL"中要包含:?name=XXX的格式。

         [例4-10利用jsp:incide指令和param动作指令传递数,求1-500的连续和,运行效果如图4-14所示,该示例包含程序ex4-10.jsp, ex4-10-1.jsp, 代码如下所示。
        <!--ex4-10.jsp-->
        <%@page contentType="text/html; charset=GB2312" >
        <HTML>
        <body  bgcolor=Cyan >
            <P>动态加载页面文件ex4-10-1.jsp,计算1-500的连续和
            <jsp:include page="ex4-10-1.jsp">
                <jsp:prarm  name="computer"  value="500"/>
            </jsp:include>
        </body></html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值