zoukankan      html  css  js  c++  java
  • JSP页面的基本结构

    一:一个JSP页面由以下基本元素组成。
    (1)HTML标签
    (2)CSS
    (3)变量和方法
    (4)Java代码段
    (5)JSP动作和指令
    (6)其他脚本元素(如Javascript)
    二:JSP的基本标签
    1.<%或<jsp开头 ,%>或>结尾   推荐<% %>
    2.变量声明 <%!或<%开头 ,%>结尾 推荐<%!  %>
    3.JSP代码段 <%开头 ,%>结尾   
    4.JSP表达式 <%=开头  %>结尾
    三:JSP三种注释
    1.隐藏注释  <% --注释语句 --%>   被JSP页面完全忽略
    2.HTML注释 <!-- 注释语句-->
    3.Java注释 <% /*注释语句*/ %>
    四:变量和方法的声明
    1).<!-- 声明变量 -->
    1.作用范围:只在本JSP页面中有效
    2.<%!  %>中声明
    3.命名方法与JAVA一样,必须以分号结尾
    4.可以直接使用<% @ page    %>中声明的变量
    <%! int sum=0; %>
    2).<!-- jsp代码段 -->
    1.在请求期间执行可以使用JSP页面所定义的变量,方法,表达式或者JavaBean.
    2.脚本定义的变量和方法在当前整个页面有效,但不会被其他线程共享,用户对该变量的不会影响其他用户,当变量所在的页面关闭时该变量就会被销毁
    1.普通代码段
      <% for(int i=1;i<=100;i++){
      sum=sum+i;
      ++i; }
    %>
    2.含方法的代码段
    <%! int a=0; %>
      <%! int add(){
      a++;
      return a;
      }
      %>
      <p><%= add() %>
    3.含对象的代码段
    <body>
      <%! class test{
           int add(int a){
      a++;
      return a;
       }  } %>
      <%! test test1=new test();int b=0; %>
      <% b=test1.add(3); %>
      <p><%=b %>
    3).<!--表达式-->
    1.向页面输出内容
    2.生成动态的链接地址
    3.动态指定form表单处理页面
    <p>1加到100的和为:<%=sum %></p>
    五:JSP常用指令
    1).page指令(12个属性)
    1.language属性-指定JSP页面使用的脚本语言
    <% @page language="java" %>
    2.extends属性--指定JSP编译器父类的完整限定名(不建议使用)
    <% @page extends="javax.servlet.httpService"%>
    3.imPort属性--用于导入JSP页面使用的JAVA API类库。是唯一一个可以多次使用的属性。
    <% @page import="java.util.Date" %>
    4.session属性--用于指定是否可以使用session对象,若允许页面参与HTTP会话则为true.默认为true
    <% @page session="true" %>
    5.buffer属性--用于设定页面缓冲区大小(字节数)
    <% @page buffer="64k" %>
    6.autoFlush8属性--用于指定JSP页面是否自动刷新,若不自动刷新,当缓冲区满时抛出一个异常。
    <% @page autoFlush="false" %>
    7.isThreadSafe属性--用于指定JSP页面是否能够处理一个以上的请求,若是,则该页面肯恶搞同时收到多个JSP引擎发出的多个请求。
    8.info属性--用于指定JSP页面的相关信息文本
    9.errorPage属性--用于指定错误页面,无默认值。
    10.isErrorPage属性
    11.contentType属性--用于指定内容MIME类型和JSP页面的编码方式
    12.pageEncoding属性--用于指定Jsp页面的编码方式
    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    2.include指令
    用于在当前JSP页面中加载需要插入的文件代码,即为页面插入一个静态文件,如JSP页面,HTML页面,文本文件或是一段JAVA程序,这些加载的代码和原有的JSP代码合并成一个新的JSP页面,使用此命令有助于实现JSP的模块化。<% @include  %>将会在JSP编译时插入一个包含文本或代码的文件,这个过程是静态的。静态的包含的是指这个被包含的文件将会被插入到JSP文件中去
    <% @include file="文件名"%>
    <!--JSP_02-->
    <P> 接下来会嵌入JSP_01的页面</P>
    <hr>
    <%@ include file="JSP_01.jsp"%>
    <!--JSP_01-->
    <body>
      <%! class test{
           int add(int a){
      a++;
      return a; } }%>
    <%! test test1=new test();int b=0; %>
    <% b=test1.add(3); %>
    <p><%=b %>
    </body>
    3.taglib指令
    用来指定页面中使用的标签库以及自定义标签的前缀
    <% @taglib uri="tagLibraryURI" prefix="tagPrefix" %>
    1.prefix属性
    用于指定标记库中所有动作元素名中使用的前缀,无默认值。
    2.uri属性
    统一资源标识符属性用于指定标签库存放的位置,并告诉JSP引擎在编译JSP页面时如何处理指定标签库中的标签 ,无默认值。
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    六:JSP常用动作
    1.<jsp:param>
    用于<jsp:include>,<jsp:forward>动作体中,为其他动作传送一个或者多个参数
    <jsp:param name="参数名" value="参数值"/>
    name:指定参数名称,不可接受动态值
    value:指定参数值,可接受动态值
    2.<jsp:include>
    用来把指定的文件动态插入正在生成的页面中。该动作允许包含静态文件和动态文件,这两种包含的效果是不同的,如果包含的是静态文件,那么包含仅仅是把包含文件的内容添加JSP文件去,这个文件不会被JSP编译器执行,如果包含的文件是动态的,那么这个包含的文件也会被JSP编译器执行
    下面讲解include命令和include动作的区别
    1)include命令
    include命令可以在JSP指令转换成Servlet之前,将JSP插入其中。
    2)include动作
    在主页面被请求时,将其他页面的输出包含进来
    差别:
    1.在于二者被调用的时间。include动作在 请求期间被激活,而include命令在页面转换期间被激活。
    2.在使用上也有差异。include指令并include动作的页面难以维护,include维护起来更容易,但include指令更强大,执行速度稍快,include指令允许包含的文件中含有影响主页面的JSP代码,如响应内容的设置和属性方法的定义
    <jsp:include page="文件名" flush="true"/>
    page:指定所包含资源的相对路径,可以接受动态值
    flush:包含目标资源之前是否刷新输出缓冲区,默认值为false,不可接受动态值。
    例子1:
    <body>
    <P>接下来会嵌入JSP_01的页面</P>
    <hr>
    <jsp:include page="JSP_01.jsp"/>
    </body>
    例子2:
    <!--JSP_02-->
    <P>接下来会嵌入JSP_01的页面</P>
    <hr>
    <jsp:include page="JSP_01.jsp">
       <jsp:param name="name" value="caizhen"/>
    </jsp:include>
    <!--JSP_01-->
    <body>
      <%=request.getParameter("name") %>你好,欢迎访问!
    </body>
    例子2演示的是动态功能。其中<%=request.getParameter("name") %>中的request.getParameter("name")通过使用内置方法获取name的值
    3.<jsp:useBean>
    该动作用来加载在JSP页面中使用到的JavaBean.这个功能非常有用,能够实现JavaBean组件的重用
    <jsp:useBean
    id="Bean实例名称"
    scope="page  |request |session  |application"
    clsss="JavaBean"类
    type="对象变量的类型"
    beanName="Bean名字"/>
    1).id属性:指定该JavaBean的实例名称,不可接受动态值。如果找到id和scope相同的Bean实例,该动作将使用已有的Bean实例而不是创建新的实例。
    2).scope属性:指定Bean的作用域,一个作用域内Id值属性的值是唯一的。
    1.page(默认),表示该Bean的作用范围是本页面内(保存在当前页面的PageContext内).
    2.Request:表示该Bean在当前的客户端请求内有效。
    3.Session:表示Bean在当前HttpSession内所有页面都有效,即会话作用域
    4.Application:表示该Bean在任何使用相同的applicaton的JSP页面中有效,即整个应用程序范围内有效。
    3).class属性:指定Bean的类路径和类名,不可接受动态值,这个class不能是抽象的。
    <jsp:useBean id="time" class="java.util.Date"/>
    <p>现在的时间为:<%= time %>
    4).type属性:指定引用该对象的变量的类型,它必须是Bean类的名字,超类的名字,超类名字,该类所实现接口名字之一。变量的名字是由id属性指定的。
    5)beanName属性:用于指定Bean的名字,可以接受动态值。beanName属性必须与type属性结合使用,不能与Class属性同时使用
    <jsp:useBean id="time"
    type="java.io.Serializable"
    beanName="java.util.Date"/>
    <p>现在的时间为:<%= time %></p>
    4.<jsp:setProperty>
    用来设置,修改已实例化Bean中的属性值
    <jsp:setProperty
    name="Bean的名称"
    property="*"  | property="属性" [param=“属性“ value="值"]/>
    1.name属性:必选,表示要设置的属性是哪个Bean的,不可接受动态值
    2.property属性: 必选,表示要设置哪个属性。如果Property的值是”*“,表示所有名字和Bean属性名字匹配请求参数都将被传递给相应属性的set方法。
    3.param属性:可选,指定用哪个请求参数作用Bean属性的值。如果当前请求没有参数,则什么事也不做,系统不会将null传递给Bean属性的set方法。因此可以上Bean自己提供默认属性值,只有在请求参数明确指定了新值时才修改默认属性值。
    4.value属性:可选,用来指定Bean属性的值。
    value和param不可同时用
    <jsp:useBean id="time" class="java.util.Date">
      <jsp:setProperty name="time" property="hours" param="hh"/>
      <jsp:setProperty name="time" property="minutes" param="mm"/>
      <jsp:setProperty name="time" property="seconds" param="ss"/>
      </jsp:useBean>
      <%=time %>
    5.<jsp:getProperty>
    该动作获取指定的Bean属性值并转换成字符串输出。
    <jsp:getProperty  name="Bean的名称" property="Bean的属性”
    1.name属性:指定获取属性值的Bean的名称,不能接受动态值。
    2.property属性:指定要获取的Bean的属性名,不可接受动态值
    <!--注册页面-->
    <form action="register.jsp" action="get">
    <table border="1">
    <tr>
    <td>姓名:<input name="userName" type="text" size="16"></td>
    </tr>
    <tr>
    <td>密码:<input name="passWord"  type="password" size="18"></td>
    </tr>
    <tr>
    <td><input type=submit value="提交"></td>
    </tr>
    <!--数据处理页面-->
    <body>
    <!--使用声明好的JavaBean,id为user-->
    <jsp:useBean id="user" scope="page" class="Bean.UserRegisterBean"/>
    <!--设置JavaBean的属性-->
    <jsp:setProperty name="user" property="*"/>
    <p>注册成功</p>
    <br/>
    <!--使用Bean的方法获取属性值-->
    用户名:<%= user.getuserName() %>
    密码:<%= user.getpassWord() %>
    <hr/>
    <!--使用getProperty动作获取Bean的属性-->
    用户名:<jsp:getProperty property="userName" name="user"/>
    密码:<jsp:getProperty property="passWord" name="user"/>
    <!--数据处理页面使用UserRigisterBean来保存数据-->
    </body>
    6.<jsp:forward>
    该动作用于转发客户端的请求到另一个页面或者另一个Servlet文件中去
    <jsp:forward page="地址或者页面"/>
    <jsp:forward>动作可以包含一个或者多个<jsp:param>子动作,用于向要引导进入的页面传递参数。当动作发生时,如果已经有文本被写入输出流而且页面没有设置缓冲,将抛出异常。
    1.page属性:
    page属性指定资源的相对路径,可接受动态值。
    <!--登陆界面-->
    <body>
    <form action="JSP_04.jsp">
    <table>
    <tr>
    <td>输入用户名:</td>
    <td><input type="text" name="name" size="16" >
    </td>
    </tr>
    <tr>
    <td>输入密码:</td>
    <td><input type="password" name="password" size="18">
    </td>
    </tr>
    <tr>
    <td><input type="submit" value="登陆"></td>
    </table></form>
    </body>
    <!--数据处理界面-->
    <body>
    <%
    String name=request.getParameter("name");
    String password=request.getParameter("password");
    if(name.equals("QQ")||password.equals("123")){
    %>
    <jsp:forward page="success.jsp">
    <jsp:param value="<%=name%>" name="user"/>
    </jsp:forward>
    <%
    }
    else{
    %>
    <jsp:forward page="JSP_03.jsp">
    <jsp:param value="<%=name %>" name="user"/>
    </jsp:forward>
    <%
    }
    %>
    </body>
    内置对象request调用getParamter()方法获取参数值
    六:JSP内置对象
    JSP提供了一些由JSP容器实现和管理的内置对象,在JSP应用程序中不需要预先声明和创建这些对象就能实现特定的功能,使Java Web编程更加快捷,方便。常见JSP内置对象有
    1.out
    out对象主要用于向客户端输出各种数据,同时管理应用服务器上的输出缓冲区。应用服务器上缓冲区默认值为8kb,可以通过Page指令中的Buffer属性来设置缓冲区大小。。
    1.print()/println():用于输出数据。
    2.newLine():用于输出一个换行字符,实现换行功能
    3.flush():用于输出缓冲区里的数据,该方法先把缓冲区的数据输出到客户端,而后再清除缓冲区中的数据。
    4.clearBuffer():用于清除理的数据,并把数据输出到客户端。
    5.clear():用于清除缓冲区里的数据,但是不会把缓冲区的数据输出到客户端。
    6.getBufferSize():用于获取缓冲区的大小。
    7.getRemaining():用于获取缓冲区的剩余大小。
    8.isAutoFlush():用于自动刷新缓冲区,自动刷新返回true,否则返回false.
    9.close():用于关闭输出流。
    <%
    for(int i=0;i<3;i++)
    out.println("<h3>我奋斗的目标是....</h3>");
    String str="我将成为一名优秀的Java工程师";
    out.println(str+"<br>");
    out.println("加油");
     
    %>
    2.request:
    request对象能获取客户端的各种信息。
    request对象的生命周期由JSP容器控制。
         当客户端通过HTTP协议请求一个JSP页面时,JSP容器就会创建request对象并将请求封装到request对象中;当JSP容器处理完请求,request对象将会销毁。
        当用户请求一个JSP页面时,JSP页面所在的Web服务器会将用户的请求信息封装到内置对象request中。request对象主要用于接收客户端通过HTTP协议传送给服务器端的数据,可以通过其方法对数据进行操作。
    1.getAttribute(String name):用于返回name指定的属性值,若不存在指定的属性,就返回Null。
    2.getAttributeNames();用于返回request对象保持的所有属性值,其结果集是一个Enumeration(枚举)实例
    3.getCookies().用于返回客户端所Cookies对象,结果是一个Cookie数组
    4.getCharacterEncoding()。用于返回客户端请求中的字符编码方式。
    5.getContentLength().:用于以字节为单位返回客户端请求的大小。如无法得到该请求的大小,则返回-1.
    6.getHeader(String name):用于获得HTTP协议定义的文件头信息
    7.getHeaders(String name):用于返回指定名字的值。
    8.getHeaderNames():用于返回HTTP协议所有文件头信息,其结果是一个Enumeration实例。
    9.getInputStream():用于返回输出流,获得请求中的数据。
    10getMethod();用于获得客户端向服务器端传送数据的方法。如;get,post.
    11.getParameter(String name):
    用于获得客户端传送给服务器端的参数值。获取表单提交的信息,以字符串形式返回客户端传来的某一请求参数值,该参数名由name指定。当传递给此方法的参数名没有实际参数与之对应时,返回Null.
    12 getParameterNames():
    用于获得客户端传送给服务器的所有参数值,其结果是一个Enumeration实例。
    13getParameterValues(String name):
    用于获得指定参数的所有值。返回客户端传送给服务器端的所有参数名,结果集是一个Enumeration实例。当传递给此方法的参数名没有实际参数与之对应时,返回NULL。
    14getProtocol()
    用于获取客户端向服务端传送数据所使用的协议名称。
    15getRequestURL():
    获取获取客户端的地址。
    16getRemoteAddr()
    获取客户端的Ip地址。
    17getRemoteHost()
    用于获取客户端的名字
    18getSession([Boolean create] :
    用于返回和请求相关的session。create参数是可选的。当有参数值且为true时,如果客户端没有创建session,那么将创建一个新的session.
    19:getServerName():
    获取服务器的名字。
    20getServerPath():
    用于获取客户端服务器所请求的脚本文件的文件路径
    21.getServerPort()
    用于获取服务器的端口号
    22.removeAttributr(String name)
    用于删除请求中的一个属性
    23setAttribute(String name,java.lang.Object obj);
    用于设置参数。
    1.<!--留言板-->
    <body>
    <form action="check.jsp">
    <table>
    <td>留言:<input type="text" name="context" size="16" %></td>
    <td><input type="submit" value="发表" name="submit"></td>
    </table></form>
    </body>
    <!--数据处理页-->
    <%
    String name=request.getParameter("context");
    String password=request.getParameter("submit");
    %>
    获取到客户端提交的文本和按钮信息如下
    <hr>
    文本框的信息为:<%=name %>
    按钮信息为:<%=password %>
    2.<!--在线成绩测试-->
    <body>
    <form action="JSP_04.jsp" method="get">
    1.测试测试测试测试测试()re
    <input type="radio" name="1" value="B">测试2<br>
    <input type="radio" name="1" value="C">测试3<br>
    <input type="radio" name="1" value="D">测试4<br>
    <input type="submit" value="提交">
    </form>
    </body>
    <!--数据处理页-->
    <body>
    <%
    int examResult=0;
    String str1=request.getParameter("1");
    if(str1==null)
    str1=" ";
    if(str1.equals("B"))
    examResult++;
    %>
    <h3>你本次的测试成绩时:</h3>
    <%=examResult*100 %>
    </body>
    3.response
    该对象将服务器端数据发送到客户端,该对象包含了响应客户请求的有关信息,其封装了JSP产生的响应,然后发送到客户端以响应客户的请求。他与request对象组成了一对接受,发送数据的对象,这也是动态的基础,response对象的生命周期由JSP容器自动控制。当服务器向客户端传送数据时,JSP容器就会自动创建response对象并将请求信息封装到该response对象中:当JSP容器处理完请求后,response对象就会被销毁。
    常见的方法如下
    1.addCookie(Cookie cookie):用于给用户添加一个Cookie对象,保存客户端的相关信息。。可以使用Request的getCookies()方法获取该Cookie对象。
    2.addHeader(String name,String value);用于添加带有指定名称和字符串的HTTP文件头信息,该Header信息将传送到客户端,如果不存在就添加,存在就覆盖。
    3.addDateHeader(StrIng name,String value):用于添加带有指定名称和字符串的HTTP文件头信息,该Header信息将传送到客户端,如果不存在就添加,存在就覆盖。
    4.flushBuffer():强制把当前缓冲区所有内容发送到客户端
    5.getBufferSize():用于获取实际缓冲区的大小,如果 没使用缓冲区则返回0
    6.getCharacterEncoding():用于获取响应的字符编码方式
    7.getContentType():用于获取响应的MIME类型
    8.getOutputStream():获取客户端的输出流
    9.sendError():用于向客户端发送错误信息,如404指网页找不到错误
    10.sendRedirect();用于重新定向客户端的请求
    11.setCharacterEncoding():用于设置响应的字符编码方式
    12;setContent():用于设置响应的MIME类型。
    13.setContentLength():用于设置响应内容的长都(字节数)
    14.setHeader();用于设置指定名称和字符串的HTTP文件头信息,该Header信息将传送到客户端,如果不存在就设置,存在就覆盖。
    15.setDateHeader():用于设置指定名称和日期值的HTTP文件头信息,该Header信息将传送到客户端,如果不存在就设置,存在就覆盖
    <!--服务器定时刷新,然后输出到客户端-->
    <body>
    <%=new java.util.Date() %>
    <% response.setHeader("refresh","1"); %>
    </body>
    <!--下拉框选择访问url-->
    <!--前端-->
    <form action="check.jsp" method="post">
    <select name="link">
    <option value="baidu" selected>  baidu</option>
    <option value="hao123" selected> 网址导航</option>
    </select>
    <input type="submit"  name="sunmit" value="确定">
    </form>
    <!--数据处理-->
    <%
    String address=request.getParameter("link");
    if(address!=null)
    {
    if(address.equals("baidu")){
                       response.sendRedirect("https://www.baidu.com/");
       }else{
                  response.sendRedirect("https://www.hao123.com/");
                  }
    }
    %>
    4.session
    1.session对象用于存储特定的用户会话所需的信息。当用户在应用程序的web页之间跳转时,存储在session对象的变量将不会丢失,而是在整个用户会话中一直存在下去。
    2.当用户请求来自应用程序web页时,如果该用户还没有会话,则web服务器将自动创建一个session对象。当会话过期或被放弃后,服务器将终止该会话。
    seesion对象在服务器端
    cookie对象存在客户端
    session对象处理客户端与服务器的会话,从客户连接到服务器开始,直到客户端与服务器断开连接为止。session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器里,session的ID保存在客户计算机的Cookie中。用户首次登陆系统时容器会给用户分配一个唯一的session id 标识用于区别其他的用户。当用户退出系统时,这个session就会自动消失。
    当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在cookie中,这样session对象和用户之间一一对应的关系。当用户再次访问连接该服务器的其他页面时,不再分配给其新的session对象。直到关闭浏览器后,服务器端该用户的session对象才取消,和用户的对应关系也一一消失。
    sessIon的常用方法
    1.getAttribute(String name):用于获取与指定名字相联系的属性,如果不存在则返回null。
    2.getAttributeName():用于返回session对象中存储的每一个属性对象。
    3.getCreatTime()。用于返回session对象被创建的时间,单位为毫秒
    4.getId():用于返回session对象在服务器端的编号。
    5.getLastAccessTime():用于返回和session对象相关的客户端最后发送请求的时间。
    6.getMaxInactiveInterval();用于返回session对象的生存时间,单位为秒。
    7.setAttribute(String name,java.lang.Object value);用于设定指定名子的属性值。并把其存储在session对象中。
    8.setMaxInactiveInterval(int interval):用于设置session的有效时间。
    9。removeAttribute(String name):用于删除指定的属性(包含属性名,属性值)。
    如果在有效时间内,用户做出了新的请求,那么服务器就会将其看作一个新的用户,此时,服务器将创建一个新的session,旧的会丢失
    10。isNew():用于判断目前session是否为新的session,若是返回true,否则返回false.
    session的创建时间<%=session.getCreationTime() %></br>
    session的Id号<%=session.getId() %></br>
    客户最近一次访问时间是<%=session.getLastAccessedTime() %></br>
    session:<%=session.isNew()? "是":"否" %></br>

  • 相关阅读:
    SharePoint 2013 商务智能报表发布
    sharepoint designer web 服务器似乎没有安装microsoft sharepoint foundation
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 入门教程之创建及修改母版页
    SharePoint 2013 入门教程之创建页面布局及页面
    SharePoint 2010 级联下拉列表 (Cascading DropDownList)
    使用SharePoint Designer定制开发专家库系统实例!
    PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
  • 原文地址:https://www.cnblogs.com/cainame/p/10305922.html
Copyright © 2011-2022 走看看