JSP基础:(1)JSP概述,基本语法

 JSP概述:

    tomcat安装目录的介绍:

        bin:其中存放各种不同平台开启与关闭Tomcat服务器的脚本文件
        lib:存放tomcat与web应用的jar包,如果使用连接池,数据库驱动放置于此
        conf:存放tomcat的配置文件
        webapps:web应用的发布目录
        work:各web应用中由jsp转译生成的Java(servlet)文件存放的地方
        logs:存放tomcat的运行日志
        temp:存放tomcat运行时生成的临时文件的地方
        在tomcat服务器的webapps目录中,存放的是当前服务器管理的项目。一个tomccat服务器可以管理和运行多个项目,每个项目是以独立的文件夹形式存放于webapps目录下。
        Tomcat服务器的默认端口号是8080,如果要更改此端口号,可以进入Tomcat安装目录\conf下,使用任意文本工具打开server.xml文件
        有三处的port需要更改:

        (1)<Server port="8006" shutdown="SHUTDOWN">
        (2) <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   URIEncoding="UTF-8"(可以避免get提交中文乱码问题)
                   redirectPort="8443" />
        (3)<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />  

        另外,第二个端口处添加的: URIEncoding="UTF-8",可以避免get提交中文乱码问题
        同时,在此目录中的tomcat-users.xml文件中,可以设置管理员的用户名和密码:        

<user username="admin" password="在此输入密码" roles="admin,manager"/> 

        在tomcat_home/conf/server.xml中设置站台。
             <Context path=“ /myweb” docBase=“myjsp” 
                 debug=“0”   reloadable=“true”>
            </Context>
            </Host>
            说明解释:
            path=“/myweb”代表网络域名,http://IP:port/myweb
            docBase=“myjsp”代表站台的目录位置,
                          {tomcat}/webapps/myjsp
            Debug是调试等级,0提供的信息最少,9提供的信息最多
            Reloadable表示tomcat在执行的时候,当WEB-INF\web.xml被更新时,是否不需重启tomcat而自动更新加载。

Servlet:

        Servlet是一种运行于服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面,它担当客户请求与服务器响应的中间层 ,有特殊的技术规范:必须继承某个特定父类;必须配置之后才能执行;有特定的生命周期
        Servlet是在Java代码中嵌入页面代码,JSP是在页面代码中嵌入Java代码
        JSP不能执行,必须转译成Servlet并编译成class后才能执行,Servlet是学好JSP的基础,能了解JSP的底层运作方式。   

 Servlet接口

            HttpServlet类

            httpServlet中各种接受请求处理的方法。

doGet() 处理http的get请求
 doPost() 处理http的post请求,主要用于发送HTML文本中FORM的内容
doHead() 用于处理HEADER请求
 doPut() 处理http的put请求,模仿 ftp发送
doDelete() 处理http的delete请求
doOptions() 该操作自动决定支持什么HTTP方法
doTrace() 处理HTTP的trace请求

         发送请求的三种基本方式

            (1)地址栏直接键入地址(默认get方式) 例如:在地址栏输入:http://127.0.0.1/jsp2/index.jsp?a=2
            (2)使用表单提交(默认get方式)只有使用表单的method=post才是post提交
            (3)点击超链接(默认get方式)

        HttpServletRequest接口中的方法

            String getParameter(String CtlName)方法:可取得用户在表单或URL中向服务器传送的相应参数,
                其中的CtlName代表html表单中控件的名称或在URL地址中传递的参数的名称
            setCharacterEncoding( String EncodingCode):该方法用于设置接收参数的编码类型,仅适用于post提交方式。
                其中EncodingCode参数指定具体的编码类型。
                GB2312:中国国家语言标准编码,如果出现中文问题,可将EncodingCode参数设为此值
                GBK:国标扩展编码,含GB2312中的常见汉字编码及一些难检汉字,利用此编码同样可以解决汉字乱码问题
                BIG5:是处理繁体汉字的一种编码方式。
                ISO8859:国际通用字符编码标准,是Servlet默认的编码

        HttpServletResponse接口封装了http协议的服务器响应相关的内容,利用此接口可获得向浏览器或其他http客户端输出响应结果的输出流。
            PrintWriter getWriter()方法:获得向客户端进行文本输出的控制流
            ServletOutputStream getOutputStream()方法: 获得向客户端输出二进制数据的控制流
            void setContentType(String TYPE)方法:设置输出流的数据类型。如果要设置输出的数据类型,必须首先调用此方法对输出流的数据类型进行设定。
            TYPE的取值类型:text/html[;charset=charEncoding]
            向客户端回应一个超文本文件,其编码为charset所指定的编码。如果省略了charset指定,将采用服务器端的默认的编码。
        说明:如果响客户端回应的内容含有中文,且采用JDK自带的编译器进行编译(编译时不指定编码类型),
            则需要利用charset参数指定文档的编码类型为GBK或GB2312,否则向客户端输出的中文内容将是乱码 

      serlvet配置:            

            <servlet>
                <servlet-name>Servlet的名称</servlet-name>
                <servlet-class>该servlet类的路径</servlet-class>
                     <init-param>
                           <param-name>参数名</param-name>
                           <param-value>参数值</param-value>
                     </init-param>
                <jsp-file>/路径/XXX.JSP </jsp-file>
               <load-on-startup>表示web站台被启动时,自动加载该servlet的优先级别,越小越优先加载</load-on-startup>
            </servlet>
            <servlet-mapping>
                <servlet-name>对应的servlet-name名称</servlet-name>
                <url-pattern>在项目运行时用以访问的URL </url-pattern>
            </servlet-mapping>


url-pattern 取值:1、可以与具体的某个Servlet对应。2、也可以用/* 来指定所有的页面。

       Servlet的生命周期

           每个servlet实例的生命周期中只有三种类型的事情,分别对应于由servlet容器所调用的三个方法:
            init() 初始化时期:
                当servlet第一次被装载的时候由servlet容器调用init(),且只调用一次,默认情况下调用超类的init()方法。
            service()运行时期:
                接受客户请求并决定调用何种doXXX方法,并将处理结果返回到客户端。
            destroy()结束时期:
                为可选方法,释放不用的servlet实例所占内存和资源。

       Servlet的生命周期可以归纳为以下几步:

                Servlet创建一个Servlet实例;
                Servlet调用Servlet的init()方法;
                客户发送请求到Servlet;
                Servlet创建一个请求对象和一个响应对象
                Servlet调用service()方法,传递请求和响应对象作为参数;
                service()方法获得请求对象的参数,处理请求,访问其他资源。
                service()方法通过响应对象将结果传递给Server,最终到达客户端。
                对于更多的相同客户端请求, Servlet将创建新的请求和响应对象,仍然激活此Servlet的service方法,传递新的参数对象,不需在初始化一次。
               当Servlet不再需要Servlet时(关闭时)调用destory()方法。

JSP基本语法:       

     JSP网页由两部分组成        

        Template Date:固定模板数据    

              Template Date:JSP容器不处理的部分,如HTML的内容,直接送到客户端执行。
        Elements:元素数据        

              Elements:必须经由JSP容器处理的,而大部分都以XML作为语法基础,且大小写必须一致。
        

    Elements分为四类:

        (1)指令元素:提供JSP网页的相关信息和属性。语法格式一般为 <%@elements ….%>

        (2)java脚本:<% …%>,<%!...%>

        (3)动作元素:<jsp:…>

        (4)表达式语言:${…}
        Jsp脚本元素:<%%>,<%!%>称为界定符
        其中包含java代码,如变量或方法声明,表达式求值

     1脚本元素分为三类:

            1.1声明元素:<%!    int   i=0;  %>  
             1.1.1可一次声明多个变量或方法;
             1.1.2编译后最终转换成servlet代码;
             1.1.3变量和方法只在当前一个页面有效
             1.1.4变量为页面级的全局变量,若有N个请求执行该JSP页面,将启动多个线程共享此变量。建议改用<% %>
            1.2.表达式元素:<%=   getName()  %>
                1.2.1Expression的值必须能转换成字符串,否则异常
                1.2.2在expression中不能用;作为其结束符号
                1.2.3Expression能包含任何java语法
                1.2.4等价于<%out.print(expression)%>
            1.3.Scriptlets:<%   合乎JAVA标准语法的程序片断 %>
                1.3.1可使用声明中定义的变量和方法
                1.3.2包含的小程序片段必须符合java语法规范
                1.3.3可以使用JSP中包含的隐含对象
                1.3.4可使用表达式或<jsp:useBean>声明过的对象
                1.3.5若有注释其方法和java中的注释方法一样。、

      2.指令 :

           主要用来提供整个JSP网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方法、语法、信息等等起止符号为:<%@...%>
            内文部分为一些指令和一连串的属性设定:<%@ directive  attr1=“value1” attr2=“value2”…    %>
            包含三种指令:
            2.1page:   页面属性指令
                2.1.1Page指令:设定整个JSP网页的属性和相关功能。
                    <%@page  attri1=“  ” attri2=“  ”  ....   %>
                    Attribute可选值:
                          Import =“   ” 指明该JSP可以使用那些JAVA API
                          session=“true/false”    指明该JSP是否可以用session对象
                          pageEncoding=“ ”     指明该JSP网页的编码方式
                          contentType   =“ ”     表示MIME类型和JSP的编码方式
                          buffer=”none/size kb”    设置缓冲区,默认8KB
                          autoFlush=“true/false”  是否自动清楚缓冲
                          Langugae=指明小脚本片断使用的语言,默认java
                          Extends  =“   ”   指明生成的servlet继承那个父类
                          errorPage=“  ”   异常后的重定向UTL
                         isThreadSafe=true|false
                eg:                    

<%@page  import =“java.net.*, java.util.List” %>
<%@page  contentType=“text/html;charset=gbk” %>

                注意点:
                    导入多个包的时候可以分开写,也可以用,隔离     初import属性外,其他属性只能设置一次
                    <%@page contentType=“text/html;charset=gbk” %>
                    不能分开写成:<%@page contentType=“text/html”;charset=“gbk”  %>
            2.2include:包含指令
                Include指令:在JSP编译时插入一个包含文本或代码的文件,这个包含过程是静态的。
                <%@include  file=“relativeURLspec”    %>包含的文件类型:jsp,html,文本,java程序段。
                relativeURLspec值不能是变量URL。
                relativeURLspec后不能加任何参数。
                relativeURLspec所指的路径必须是相对于此JSP的网页的路径。
                文件中要避免有<html></html>

         2.3taglib: 自定义标签指令

JSP:常用动作指令

           1.<jsp:include>包含指令,用来动态包含另一个JSP页面;
            1.1.<jsp:include>元素允许你包含动态和静态文件,路径可以是变量URL
            1.2.被包含文件中不要带有HTML标签;
            1.3若是静态文件,内容直接加到JSP网页中;
            1.4若是动态文件,被包含的文件也会被JSP引擎编译执行。
        <jsp:include> 与<%@include >的区别
            (1)动态包含使用<jsp:include> 标签来实现
            <jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
                动态包含可以给被包含的页面传递参数
            (2)静态包含使用include伪码实现
            不会检查所含文件的变化,适用于包含静态页面;静态包含不能给被包含的页面传递参数
               <jsp:forward>转发指令,用来将请求转发至一个新的页面
                操作将客户端所发出的请求从当前页面转交到另一个HTML或JSP页面。
                <jsp:forward>标签之后的程序将不会在执行。
                例如:

                    <% out.println(“会被执行!!!”);%>
                    <jsp:forward page=“quoting.jsp”>
                        <jsp:param name=“name” value=“Tom”/>
                    </jsp:forward> 
                    <%  out.println(“不会被执行!!!”); %>

        <jsp:param>参数标签,一般与其它动作指令搭配使用
            <jsp:param>用来提供key/value值,常与<jsp:include><jsp:forward>一起使用。
            <jsp:param name=“pname” value=“pvalue”/>
            当与<jsp:include>和<jsp:forward>一起用时,被包含的网页或转向后的网页会先看看request对象里面除原来的参数值之外,
        是否有新的参数值,如果有,则新参数值会替换原来的参数值
        例如:src.jsp (String a = foo) __包含__>  des.jsp (String a = bar )  ====>最终页面String a = bar
        例如:
        first.jsp:          

           <%@ page contentType="text/html;charset=gbk"%>
                ……
                <center>
                <a href="second.jsp?p1=first">second.jsp</a>
            </center>

        second.jsp:
            <%@ page contentType="text/html;charset=gbk"%>          

            <%System.out.println("转发前."); %>
            <jsp:forward page="third.jsp">
                  <jsp:param name="p2" value="second"/>
            </jsp:forward>
            <%System.out.println("转发后(不会被执行)."); %>

        third.jsp:        

            <%@ page contentType="text/html;charset=gbk"%>
            <%
                out.println("最终的页面,请求结束了。<br>");
                out.print("first.jsp传递过来的参数p1:");
                out.println(request.getParameter("p1")+"<br>");
                out.print("second.jsp传递过来的参数p2:");
                out.println(request.getParameter("p2")+"<br>");
            %>

 

猜你喜欢

转载自blog.csdn.net/u012060033/article/details/82693616