zoukankan      html  css  js  c++  java
  • JAVA EE JSP_JSTL

    JSP2.1的改动
    http://marshal.iteye.com/blog/141878
    带着这个问题,查看了JCP的change log。
    见: jcp.org/aboutJava/communityprocess/maintenance/jsr245/245-MR1.html  
    JSP2.1主要改动是,使EL可脱离JSP2.1规范并单独成为规范。
    下一个版本的JSP规范将删除有关EL的描述。
    并将推出单独的EL规范。
    改动列表:
    1. 版本:作为JSP2.1一部分的EL定义为1.0,独立的EL定义为1.1。
    2. 在EL1.1中的新方法:为了EL可以独立执行,增加了两个工厂方法。
      • javax.el.ExpressionFactory.newInstance()
      • javax.el.ExpressionFactory.newInstance(Properties)

    JSP 2.1   Tag Libs  / JSTL 1.2 ... + tomcat6        

    http://hintcnuie.iteye.com/blog/178038

    http://jakarta.apache.org/taglibs/doc/standard-1.0-doc/intro.html

    JSP 2.0 Tag Libs   RDC / Standard-1.1 

    JSP 1.2 Tag Libs  Standard-1.0

    JSP 1.1 Tag Libs   DateTime / I18N / JNDI / Log / Random / Regexp / String

    http://aguu125.blogbus.com/logs/32255197.html

    JSTL 1.2   (J2EE 5/JSP 2.1) + tomcat6

    Download: https://maven-repository.dev.java.net/repository/jstl/jars/ 

    JSTL 1.1   (J2EE 1.4/JSP 2.0)

    Download: http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 

    JSTL 1.0   (J2EE 1.3/JSP 1.2)

    Download: http://jakarta.apache.org/site/downloads/downloads_taglibs-standard-1.0.cgi

    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
    <%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>

    http://user.qzone.qq.com/170475387/blog/50

    JSP API

    http://tomcat.apache.org/tomcat-5.5-doc/jspapi/index.html

    Jasper API

    http://tomcat.apache.org/tomcat-5.5-doc/jasper/docs/api/index.html  
    Servlet API  
    http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html  
    http://jakarta.apache.org/taglibs/index.html  
    http://archive.apache.org/dist/jakarta/taglibs/standard/  
    http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/  
    http://archive.apache.org/dist/jakarta/taglibs/standard/source/  

    JSP 2.0 技术手册.pdf

    http://leishih.iteye.com/blog/131123

    http://lib.verycd.com/2008/03/28/0000184299.html

    JSP 2.0 Tag Libs      
    RDC  Tag libs  Reusable Dialog Components  
    Standard-1.1   http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi  
    JSP 1.2 Tag Libs   Standard-1.0  
    JSP 1.1 Tag Libs   DateTime   I18N   JNDI   Log   Random   Regexp   String  
    JSP 1.0 Tag Libs   core   、 format 、 xml 、 sql  
    core  
    表达式操作:out、set、remove、catche 
    流程控制:if、choose、when、otherwise 
    迭代操作:forEach、forTokens 
    URL操作:import param、url param、redirect param 


    session与cookie的区别  
    http://blog.csdn.net/ddviplinux/archive/2008/04/17/2299441.aspx

    利用session实现在线人员监控

    http://tcrct.iteye.com/blog/259173

    JSP防止吃重复在线人数统计

    http://xiaozhao-521.iteye.com/blog/263420


    scope   :page、request、session、application 
    page<request<session<application 
    session默认时效:  
    Tomcat
    〉〉〉〉〉〉  
    config文件夹web.xml文件   
              <session-config>   
                      <session-timeout>30</session-timeout>   
              </session-config>   
    Tomcat
    〉〉〉〉〉〉  
    Expression Language   隐式对象   11个   :JSP、scope、param、header、Cookie、initParam。      
    JSP            PageContext 
    作用域       pageScope、requestScope、sessionScope、applicationScope 
    请求参数    param、paramValues 
    请求头       header、headerValues 
    Cookie      cookie 
    初始参数    initParam 
    JSP  隐式对象   9个   :   request、response、out、session、appliation、pageContext、page、config、exception  
    输入输出对象::request、response、out 
    作用域通信对象:session、appliation、pageContext 
    Servlet对象:::page、config 
    错误对象::::exception       
    scriptlet 
    <% if (user.getRole() == "member")) { %> 
        <p>Welcome, member!</p> 
    <% } else { %> 
        <p>Welcome, guest!</p> 
    <% } %> 
    jsp  
    <jsp:setProperty name="user" property="timezonePref" value='<%= request.getParameter("timezone") %>'/> 
    jsp+el  
    <c:out value="Hello ${user.firstName} ${user.lastName}"/> 
    el算术运算符  
    ${item.price * (1 + taxRate[user.address.zipcode])} 
    el关系和逻辑运算符  
    ${(x >= min) && (x <= max)} 
    el版本Taglib伪指令  
    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> 
    rt版本Taglib伪指令  
    <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %> 
    <c:set>  
    <c:set var="
    name   " scope="s cope   " value=" expression   "/> 
    <c:set var="timezone" scope="session">CST</c:set> 
    <c:set var="square" value="${param['x'] * param['x']}"/> 
    <c:remove>  
    <c:remove var="timezone" scope="session"/> 
    <c:out>  
    <c:out value="
    expression   " default=" expression   " escapeXml=" boolean   "/> 
    带缺省值:Hello <c:out value="${user.username}" default=="Guest"/>! 
    禁用转义:<c:out value="${user.company}" escapeXml=="false"/> 
    <c:set><c:out/></c:set>  
    <c:set var="timezone" scope=="session"><c:out value="${cookie['tzPref'].value}" default=="CST"/></c:set> 

    通过避免使用脚本编制元素来简化对 JSP 应用程序的软件维护 
    developerWorks 中国     >     Java technology  
    http://trampeagle.iteye.com/blog/23492  
    http://www.ibm.com/developerworks/cn/java/j-jstl0211/  
    JSTL Core使用定制标记进行流控制和 URL 管理 
    developerWorks 中国     >     Java technology   Web development     >    
    http://www.ibm.com/developerworks/cn/java/j-jstl0318/  
    JSP语法:<% =userList.getUser().getPhoneNumber() %> 
    JSP+JSTL:<c_rt:out value="<% =userList.getUser().getPhoneNumber() %>" /> 
    JSTL+EL:<c:out value="${userList.user.phoneNumber}" /> 
    1。jsp有哪些动作?(6种)作用分别是什么?  
    jsp:include           在页面被请求的时候引入一个文件。 
    jsp:useBean          寻找或者实例化已个JavaBean。 
    jsp:setPropetry      设置JavaBean的属性。 
    jsp:getProprtry      输出某个JavaBean的属性。 
    jsp:forward         把请求转到一个新页面。 
    jsp:plugin           根据浏览器类型为java插件生成Object或embed标记。   
    2。jsp include中实现两种方式的区别?  
    动态和静态两种 
    动态include:用jsp:include动作实现,它总会检查所含文件的变化,适合于包含动态页面,并且可以带参数。 
    静态include:用include伪码事项,定不会检查文件的变化,适用于包含静态页面。 

    4. Forword 和Redirect 的区别  
    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来, 
    然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的, 
    所以它的地址栏中还是原来的地址。 
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址, 
    一般来说浏览器会用刚才请求的所有参数重新请求, 
    所以session,request参数都可以获取。 
    http://www.gzit.org/html/27/27-1641.html  
    含参请求转发  
    <jsp:forward page="Relative URL">  
    作用与SERVLET中使用的RequestDispatcher方法的作用是一致 
    由服务器执行,因此跳转的页面可以放在WEB-INF目录中,提高程序的安全性 
    服务器重定向  
    response.sendRedirect()  
    向浏览器发送一个特殊的HEADER,然后又浏览器来做转向,装到指定的页面 
    浏览器上的地址栏里可以明显看到地址的变化,使用sendRedirect做转向时,转向的页面不能放在WEB-INF下 
    页面级重定向  
    <meta http-equiv="Refresh" content="秒数";url="跳转的文件或者地址">  
    重定向   请求作用域的参数在转到下一页面时回失效 
    还有就是用js了...  
    windows.location.href='www.gzit.com'  
    windows.navigate('www.gzit.com') 
    windows.location.replace('www.gzzit.com')


    Servlet

    Servlet的Filter过滤器 http://gotothework.iteye.com/blog/226204


    过滤器是请求和响应之间的一种WEB组件,它驻留在服务器端,用来截取客户端与资源之间的请求,并对这些信息进行“过滤”。 

    Servlet容器对部署描述符中声明的每一个过滤器只会创建一个实例。与Servlet类似,容器将在同一个过滤器实例上运行多个线程来同时为多个请求服务,因此开发过滤器时要注意线程安全问题。 

    当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将把请求交给过滤器进行处理,在过滤器中可以改变 请求的内容,或重新设置请求的报头信息,然后将请求发送给目标资源,当目标资源对请求做出响应时,容器同样会将响应转发给过滤器,在过滤器中可以对响应的 内容进行过滤,从上面的过程我们可以看出,客户端和目标资源不需要知道过滤器的存在,对于客户端来说是透明的。 

    过滤器位于javax.servlet包中,有3个主要方法: 
    1.init(FilterConfig config) 
    Web容器调用方法来初始化过滤器,容器在调用该方法时,向过滤器传递FilterConfig对象,FilterConfig用法和 ServletConfig类似。利用FilterConfig对象可以得到ServletContext对象,以及在部署描述符中配置的过滤器的初始化 参数。 

    2.doFilter(ServletRequest request,ServletResponse response,FilterChain chain) 
    doFilter()方法类似Servlet接口的service()方法。当客户端请求目标资源的时候,容器会调用与这个目标资源想关联的过滤器的 doFilter()方法。在这个方法中,可以对请求和响应进行处理,实现过滤器的功能。在特定的操作完成后,可以调用chain.doFilter() 方法将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或利用RequestDispatcher的forward()和 include()方法,以及sendRedirect()方法转发。 
    但是要注意,这个方法的请求响应参数的类型是ServletRequest和ServletResponse,也就是说过滤器的使用不依赖具体的协议。 

    3.destroy() 
    Web容器调用该方法只是过滤器的声明周期结束。 

    下面看下过滤器在Web.xml中的声明:

    Java代码  复制代码
    1. <filter>  
    2.     <filter-name>setEncoding</filter-name>  
    3.     <filter- class   >com.test.CharFilter</filter-   class   >  
    4. </filter>  
    5. <filter-mapping>  
    6.     <filter-name>setEncoding</filter-name>  
    7.     <url-pattern>/*</url-pattern>  
    8. </filter-mapping>  
    <filter>
        <filter-name>setEncoding</filter-name>
        <filter-class>com.test.CharFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>setEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    
    
    


    Filter的声明和Servlet的类似,从上面的简单的配置中就可以看到,不做过多说明,主要说下<url-pattern>元素中的参数: 
    1.REQUEST,当用户直接访问页面时,Web容器将会调用过滤器,如果目标资源是通过RequestDispatcher的includ()或forward()方法访问时,那么不会调用这个过滤器。 
    2.FORWARD,如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外过滤器不会被调用。 
    3.INCLUDE,如果目标资源是通过RequestDispatcher的include()方法访问时,调用过滤器,其他不会调用。 
    4.ERROR,如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用,除此之外不会被调用。 
    5./*,所有请求都会调用。 

    过滤器应用的很广,特别是在Spring中,AOP,Acegi都应用到了过滤器的技术,所以,我们可以看出,只有很好的掌握了Servlet的 各种技术,我们在后期的学习中才能更加的得心应手。在这里,我只是简单的介绍了过滤器基础的东西,更加高级的,希望与大家一起学习讨论。





    export excel csv.jsp
    <%@ page language="java" import="java.io.*,java.sql.*" pageEncoding="UTF-8"%>
    <jsp:directive.page import="com.arvato.sn.common.Common;"/>
    <%
     response = (HttpServletResponse) pageContext.getResponse();
     response.setContentType("text/plain");
     response.addHeader("content-disposition","attachment; filename=productList.csv");
     response.setContentType("application/vnd.ms-excel; charset=GBK");
     //com.bstek.dorado.data.Dataset ds = new com.arvato.sn.product.view.ProductListViewModel().getDataset();
     PrintWriter pw = response.getWriter();
     Connection con = Common.getInstrage().getCon();
     Statement st = con.createStatement();
     ResultSet rs = null;
     String comma = ",";
     StringBuffer sb = new StringBuffer();
     sb = sb.append("SELECT ");
     sb.append("GENERAL_PRODUCT.NAME 品名,");
     sb.append("trunc(PRODUCT_LIST.ERP_CODE) 商品代码,");
     sb.append("SALES_ORGANIZATION.SALES_ORGAN_NAME 分公司,");
     sb.append("PRODUCT_LIST.SALES_ORG 分公司代码,");
     sb.append("PRODUCT_LIST.VENDOR 供应商代码,");
     sb.append("PRODUCT_LIST.DISTRIBUTION_SITE 发货地点,");
     sb.append("PRODUCT_LIST.DEPOT 库位,");
     sb.append("B2C_CATEGORY.NAME b2c类别,");
     sb.append("PRODUCT_LIST.SALE_QUANTITY 销售数量,");
     sb.append("SHADOW_INVENTORY.STOCK_QUANTITY 库存,");
     sb.append("PRODUCT_LIST.REF_PRICE 最近销售价格,");
     sb.append("PRODUCT_LIST.FORWARD_STATUS 厂送标志,");
     sb.append("PRODUCT_LIST.EAN_CODE EAN码,");
     sb.append("to_char(PRODUCT_LIST.LATEST_SALE_DATE,'yyyy-MM-dd') 最后销售日期 ");
     sb.append("FROM PRODUCT_LIST,");
     sb.append("SALES_ORGANIZATION SALES_ORGANIZATION,");
     sb.append("GENERAL_PRODUCT GENERAL_PRODUCT,");
     sb.append("B2C_SAP B2C_SAP,");
     sb.append("B2C_CATEGORY B2C_CATEGORY,");
     sb.append("VENDOR VENDOR,");
     sb.append("SHADOW_INVENTORY SHADOW_INVENTORY ");
     sb.append("WHERE");
     sb.append("(PRODUCT_LIST.SALES_ORG = SALES_ORGANIZATION.SALES_ORGA_CODE(+)) AND ");
     sb.append("(PRODUCT_LIST.FK_GENERAL_PRODUCT = GENERAL_PRODUCT.GENERALID(+)) AND ");
     sb.append("(GENERAL_PRODUCT.FK_SAP_CATEGORY = B2C_SAP.FK_SAP_CATEGORY(+)) AND ");
     sb.append("(B2C_SAP.FK_B2C_CATEGORY = B2C_CATEGORY.BCATEGORYID(+)) AND ");
     sb.append("(PRODUCT_LIST.VENDOR = VENDOR.VENDOR_CODE(+)) AND ");
     sb.append("(PRODUCT_LIST.ERP_CODE = SHADOW_INVENTORY.ERP_CODE(+)) AND ");
     sb.append("(PRODUCT_LIST.VENDOR = SHADOW_INVENTORY.VENDOR(+)) AND ");
     sb.append("(PRODUCT_LIST.DISTRIBUTION_SITE = SHADOW_INVENTORY.DISTRIBUTION_SITE(+)) AND ");
     sb.append("(PRODUCT_LIST.DEPOT = SHADOW_INVENTORY.DEPOT(+))");
     //String so = request.getParameter("SALES_ORG");
     //String code = request.getParameter("ERP_CODE");
     //String pname = request.getParameter("NAME");
     //if(so!=null){
      //sb.append(" AND PRODUCT_LIST.SALES_ORG ='").append(so).append("'");
     //}
     //if(code !=null && code.trim()!=""){
      //sb.append(" AND PRODUCT_LIST.ERP_CODE like '%").append(code).append("%'");
     //}
     //if(pname !=null){
      //sb.append(" AND GENERAL_PRODUCT.NAME like '%").append(pname).append("%'");
     //}
     String sql = sb.toString();
     System.out.println(sql);
     rs = st.executeQuery(sql);
     if(rs!=null){
     String erpCode = "";
     String name = "";
     String salesName = "";
     String salesOrg = "";
     String vendor = "";
     String ds = "";
     String dept = "";
     String b2cCate = "";
     int qty = 0;
     int stock = 0;
     int price = 0;
     String fs = "";
     String ean = "";
     String salesDate = "";
     //to write the title
     pw.write("品名"+comma+"商品代码"+comma+"分公司"+comma+"分公司代码"+comma+"供应商代码"+comma+"发货地点"+comma+"库位"
     +comma+"b2c类别"+comma+"销售数量"+comma+"库存"+comma+"最近销售价格"+comma+"厂送标志"+comma+"EAN码"+comma+"最后销售日期"+"\n");
     while(rs.next()){
      name = rs.getString(1);
      erpCode = rs.getString(2);
      salesName = rs.getString(3);
      salesOrg = rs.getString(4);
      vendor = rs.getString(5);
      ds = rs.getString(6);
      dept = rs.getString(7);
      b2cCate = rs.getString(8)== null?"":rs.getString(8);
      qty = rs.getInt(9);
      stock = rs.getInt(10);
      price = rs.getInt(11);
      fs = rs.getString(12) == null ? "":rs.getString(12);
      ean = rs.getString(13);
      salesDate = rs.getString(14);
      pw.write(name+comma+erpCode+comma+salesName+comma+salesOrg+comma+vendor+comma+ds+
      comma+dept+comma+b2cCate+comma+qty+comma+stock+comma+price+comma+fs+comma+ean+comma+salesDate);
      pw.write("\n");
     }
     rs.close();
     con.close();
     }
     %>



    JSP中表单数据存储的一种通用方法
    ******************** JSP中表单数据存储的一种通用方法   *********** 
    摘 要 
      本文以Oracle数据库为例,介绍了在采用JSP技术开发WEB应用时一种简便通用的表单数据存储处理方法,以减轻开发工作量,同时提供了主要的程序代码。 
      引言 
      J2EE(Java 2 Enterprise Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现 页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁 重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开 发人员大量的时间和精力。采用什么方法来减轻表单数据存储的开发工作量是值得研究的问题。 
      两种常见的表单数据存储处理方法 
      1、对每一表单都编写相应的程序代码 
      在JSP页面或JavaBean或Servlet中,使用request. getparameter()函数逐一提取表单提交的数据,或编写相应的JavaBean,使用setProperty方法将数据自动取到 JavaBean中,然后生成SQL语句(insert,update,delete),最后执行executeupdate()函数完成数据表存储。 
      2、对每一数据表自动生成一个JavaBean程序代码 
      数据库系统必须支持用户能够读取表结构,并识别关键字段。利用面向对象快速开发工具,如PowerBuilder、Delphi等,自行开发 一个java代码自动生成程序。在该程序中读取数据库表的结构:字段名、数据类型、数据长度,自动生成一个JavaBean代码。在该代码中定义与表中字 段对应的同名变量,建立所有变量的setValue和getValue方法,建立insert、update、delete函数分别处理insert、 update、delete的SQL语句生成和执行。 
      在表单提交的数据处理页面中,编写如下代码,将表单数据存储到JavaBean中: 
    <jsp:useBean id="table" class="table1_bean" /> 
    <jsp:setProperty name="table" property="*" /> 
    (注:table1_bean为上述自动生成的对应某一个表的JavaBean) 
    然后调用table1_bean中insert、update、delete函数完成数据表存储,并返回执行结果。如: 
    <%boolean success =table.insert(); %> 
      第一种方法简单直观,但对每一表单都需要编写相应的数据处理程序。对稍微大一点的应用,表单数量可能很多,开发工作量很大,开发工作效率低。表结构变动如增加、减少字段时,需修改相应的数据处理程序。 
      第二种方法相对第一种简便得多,每一数据表的数据处理由对应的JavaBean实现,JavaBean自动生成,不需编写,表结构变动时只需 重新生成新的JavaBean,经java编译后覆盖原java类即可。但该方法需要开发JavaBean自动生成程序,表结构变动时JavaBean需 要重新生成和编译。 
      介绍一种简便通用的方法实现表单数据存储 
      在WEB应用开发中,很多表单在经过前台浏览器端简单的数据校验后,提交后台服务器,服务器对数据不用作任何处理直接将数据存储到一个数据表 中。对这种情况,我们可以只编写一个程序,对这些表单统一处理,将数据存储到相应的一个数据表中。该方法同样要求数据库系统支持表结构读取和关键字段识 别。我们采用JSP技术编写该程序,程序文件取名为DbdataStore.jsp。 
      1、调用格式 
      在网页中表单的Action调用方法如下: 
    <Form Name=Frm1 Method=Post Action="DBdataStore.jsp? tablename=table1&OperType=…"> 
      table1为数据将要存储的数据库表的表名,OperType操作类型分为三种:insert,update,delete。 
    表单中的<input type=text name=…>,<textarea name=…><select name=…>等中的name值应与数据表的字段名相同,DBdataStore.jsp中逐一提取表单提交的对应字段名的数据值,若表单中未定义输入, 得到的值为空值,则对该字段不作处理。 
      2、以oracle为例的视图定义 
      1) 建立表各列数据类型视图 
    CREATE OR REPLACE VIEW v_dbstru AS SELECT table_name,column_name,data_type,data_length,data_precision,data_scale,column_id
     
     

    E:\program\JSP+Servlet+JSF\11(进阶一)_JSP+JDBC实现

    /*
    E:\program\JSP+Servlet+JSF\11(进阶一)_JSP+JDBC实现>tree /f
    卷 data 的文件夹 PATH 列表
    卷序列号码为 0044004A E462:C3F5
    E:.
    │  JSP+JDBC留言管理程序-cl.avi
    │  笔记.pdf
    │  简介.txt
    │
    └─代码
        └─note
                delete_do.jsp
                insert.jsp
                insert_do.jsp
                list_notes.jsp
                list_notes.jsp.bak
                login.jsp
                login_conf.jsp
                login_success.jsp
                update.jsp
                update_do.jsp
                数据库创建脚本.txt
    */
    --删除表
    DROP TABLE person;
    DROP TABLE note;
    --删除序列
    DROP SEQUENCE note_seq;
    --创建表
    CREATE TABLE person(
           id varchar(20) not null primary key,
           name varchar(20),
           password varchar(20)
    );
    
    CREATE TABLE note(
           id int not null primary key,--sequence
           title varchar(20) not null,
           author varchar(20) not null,
           content varchar(50) not null
    );
    --插入数据
    INSERT INTO person VALUES('txj','中文名','tttttt');
    INSERT INTO person VALUES('lindows','中文名','llllll');
    --提交事务
    commit;

    el 表达式

    mytag extends BodyTagSupport   //JSP API

    doStartTag();

    --EVAL_BODY_INCLUDE 只输出标签体内容

    --EVAL_BODY_BUFFER   计算标签体内容或处理

    --SKIP_BODY_INCLUDE  忽略标签体内容

    doEndTag();

    --SKIP_PAGE 并输出标签后内容

    --EVAL_PAGE 输出标签后内容

    tagsupport与bodytagsupport的区别

    http://mercyblitz.iteye.com/blog/70114

    http://nenty.iteye.com/blog/261951

    JSP自定义标签学习(高级)

    http://www.cnzzad.com/tut/47843.html

    JSP自定义标签学习之高级标签

    http://www.eimhe.com/bbs/viewthread.php?tid=91949&extra=page%3D1

    JSP 购物车 

    1.session 放入服务器内存

    2.隐藏表单域:request.setAttribute();//来回传输耗资源

    end

  • 相关阅读:
    118. Pascal's Triangle
    172. Factorial Trailing Zeroes
    345. Reverse Vowels of a String
    58. Length of Last Word
    383. Ransom Note
    387. First Unique Character in a String
    83. Remove Duplicates from Sorted List
    关于Assembly.CreateInstance()与Activator.CreateInstance()方法
    查看占用指定端口的进程
    如何使用eclipse打开已有工程
  • 原文地址:https://www.cnblogs.com/lindows/p/14390621.html
Copyright © 2011-2022 走看看