程序手记

程序是我毕生的追求......
随笔 - 19, 文章 - 0, 评论 - 9, 引用 - 0
数据加载中……

2008年8月13日

JSP基础 (文件上传) 第二十二天

    把一个指定的文件上传到服务器,通常依靠JSP技术完成,需要使用到两个JSP页面。第一个JSP页面是选择要上传的文件,第二个JSP页面是从客户端获取该文件里面的信息,并把这些信息以客户端相同的格式保存在服务器端,该页面主要为功能处理页面。
    第一个页面的实现必须含有FILE类型的表单,并且表单的enctype的属性必须为"muldtipart/form-data"。
    第二个页面要使用内置对象request调用方法getInputStream()获得一个输入流,通过这个输入流读取客户上传的全部信息,如上传文件的 名字,文件的大小,文件的类型。根据request所获得的信息创建一个数据输出流对象,把信息写到一个指定的文件内

    第一个文件内容如下:
        <body>
            <form method="post" action="file_14.jsp" enctype="multipart/form-data">
                <input type="file" name="file1" size="50" /><br>
                <input type="submit" value="上传" />
            </form>

    第二个文件内容如下:
        <%@ page contentType="text/html; charset='utf-8'" %>
        <%@ page import="java.io.*" %>
        <%@ page import ="java.util.*"%>
        <%@ page import="javax.servlet.*"%>
        <%@ page import = "javax.servlet.http.*" %>
        <body>
        <%
            int MAX_SIZE = 102400 * 102400;    //定义上传文件的最大字节
            String rootPath;    //创建跟路径的保存变量
            DataInputStream in = null;    //声明文件读入类
            FileOutpubStream fileOut = null;    //
            String remoteAddr = request.getRemoteAddr();    //取得客户端的网络地址
            String servName = request.getServerName();    //获得服务器的名字
            out.print("serverName=" + serverName + "<br>");
            out.print("request.getServletPath() = " + request.getServletPath() + "<br>")

posted @ 2008-08-22 00:29 程序手记 阅读(237) | 评论 (0)编辑 收藏

JavaBean基础 (javabean简介) 第二十一天

    JavaBean是一个可重复使用、且跨平台的软件组件(SoftWare Component),它可以在软件开发工具如:Borland JBuilder \ Oracle JDeveloper 或是 Sun ONE Studio 等等里,以可视化的开发方式来开发。
    首先,你可以将JAVABEAN视为一个黑盒子(Black Box),虽然知道这个软件组件所具备的功能,却不知其内部是如何运作的。笔者提供给读者一个假象的情况:有一个黑盒子,只知道它上面有一个按钮,你只要按下去经过十分钟,就会掉下一张一千元的钞票,不过你看不见其内部任何的构造,而这就是JAVABEAN最重要的特性,它将许多的信息都封装了起来,用户无需知道黑盒子如何产生出钞票,只需知道按下那个按钮,然后等十分钟,超片就会自动产生出来。
    一般而言,JAVABEAN可分为:有用户接口(user interface)的javabean和没有用户接口的javabean,通常JSP是搭配没有UI的JAVABEAN,因此后面所提到的JAVABEAN都知识单纯处理一些食物,如:数据运算,连接数据库和数据处理,等等,至于有用户接口的JAVABEAN部分,请读者自己参考JAVABEAN的相关书籍。
    通常一个标准的JAVABEAN有如下几项特性:
    (1)javabean是一个公开的(public)类;
    (2)javabean类必须有一个无传入参数(zero-argument)的构造函数(constructor);
    (3)取得或设置属性时,必须使用getXXX方法或setXXX方法。

例子:
    package tw.com.javaworld.CH8;
    
    import java.io.*;
    
    public class SimpleBean{
        public SimpleBean(){
        }
        private String name;
        private String number;
        
        public void setNumber(String number){
            this.number = number;
        }
        public String getName(){
            return name;
        }
    }

posted @ 2008-08-21 23:09 程序手记 阅读(501) | 评论 (0)编辑 收藏

JSP基础 (JSP动作元素) 第二十一天

    与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是试用XML语法写成的,它可以采用以下两种格式:
    <prefix:tag attribute = value attribute-list.../>
或者
    <prefix:tag attribute = value attribute-list.../>
    ...
    </prefix.tag>
SERVLET容器在处理JSP时,每当遇到这种动作元素,都根据它的标记进行特殊处理。
JSP规范定义了一系列的标准动作,它用JSP作为前缀。这些标准的动作不去惯容器是如何实现的,但是每个WEB容器都必须提供这些操作类型。标准动作为网页设计者提供了基本的功能,其他的厂商可以自由提供其他的非标准动作以增强功能。
    标准动作有:
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:param>
<jsp:include>
<jsp:forward>
<jsp:plugin>
<jsp:fallback>
<jsp:attribute>
<jsp:body>
<jsp:invoke>
<jsp:doBody>
<jsp:element>
<jsp:output>
<jsp:scriptelet>
<jsp:declaration>等
在标准动作中,有许多是XML语法的动作元素,比如<jsp:scriptelet> <jsp:declaration>但他们的使用并不广泛,下面介绍JSP中主要的动作元素。

文件导入标记<jsp:include>
include用于允许在请求时间内在县城的JSP页面里包含静态或者动态资源。被包含的对象只有对JSPWRITER对象的访问权,并且它不能设置头或者COOKIE,如果页面输出是缓冲的,那么缓冲区的刷新要有限于包含的刷新。此指令在运行的效率上比<%@ page include %>指令的效率低,但是可以动态增加内容。用户可以通过一下的格式来使用文件导入标记
    <jsp:include page="{relativeURL | <%=expression%>}" flush="true" />
    <jsp:include page="{relativeURL | <%=expression%>}" flush = "true" >
        <jsp:param name="parameterName" value="{parameterValue | <%=expression%>}"
    </jsp:include>

    例如:
    <jsp:include page="admin/login.jsp" />
    <jsp:include page="copyright.html" />
    <jsp:include page="admin/login.jsp">
        <jsp:parame name = "username" value="JackLong" />
    </jsp:include>

页面转向标记<jsp:forward />
实例:
    <jsp:forword page="showinfo.jsp" >
        <jsp:param name = "username" value = "<%=request.getParameter("username")%>"/>
        <jsp:param name = "telephone" value = "<%=request.getParameter("telephone")%>"/>
    </jsp:forword>

posted @ 2008-08-21 05:20 程序手记 阅读(476) | 评论 (0)编辑 收藏

JSP基础 (获取当前时间) 第二十一天

    下面的代码用于显示当前时间,并根据当前是几点输出相应的提示信息,其中,使用java.util.Date thisday=new java.util.Date();语句来取得当前时间,然后通过相应的方法取得年,月,日,时和分的信息并输出:

<% page contentType="text/html; charset=utf-8" import="java.util.*" %>
<body>
<%
//获取当前的时间
java.util.Date thisday = new java.util.Date();
%>
当前时间:
<%=thisday.getYear()+1900%>年
<%=thisday.getMonth()+1%>月
<%=thisday.getDate()%>日
<%=thisday.getHours()%>时
<%=thisday.getMinutes()%>分
<%
String str = "欢迎访问:"
int num = this.getHours();
switch(num){
    case 8:
    case 9:
    case 10:
    case 11:
    {
        out.print("欢迎你的访问,上午好!");
        break;
    }
    case 12:
    {
        out.print("中午好!");
        break;
    }
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    {
        out.print("下午好!");
        break;
    }
</body>

posted @ 2008-08-21 04:23 程序手记 阅读(1252) | 评论 (0)编辑 收藏

JSP基础 (高级计数器实例) 第二十天

                                                                           countFile.java
public class countFile{
    public static void writeFile(String filename,long count){
        PrintWriter out = new PrintWriter(new FileWriter(filename));
        out.println(count);
        out.close();
    }
    public static void readFile(String filename){
        File f = new File(filename);
        if(!f.exists()){
            writeFile(filename,0);
        }
        BufferedReader in = new BufferedReader(new FileReader(f));
        long count = Long.parseLong(in.readline());
        return count;
    }
    public static String tranform(long count){
        String countNumber = ""+count;
        String newstring = "";
        for(int i=0;i<countNumber.length;i++){
            newstring+="<img src='images/"+countNumber.charAT(i)+".gif' >";
        }
        return newstring;
    }
}

posted @ 2008-08-20 05:19 程序手记 阅读(173) | 评论 (0)编辑 收藏

TOMCAT基础 (设定站点) 第十三天

    在Tomcat 上建立一个 JSPBook站点时,我们需要修改Tomcat的server.xml文件,server.xml位于{Tomcat_Install}\conf\server.xml(例如:e:\apache software foundation\tomcat 5.0\conf\server.xml)。

    server.xml
    
    ......
    <!--Tomcat Root Context-->

    <!--
        <Context path="" docBase="ROOT" debug="0">
    -->
    <Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext = "true" reloadable="true" >
    </Context>
    </Host>
    </Engine>
    </Service>
    </server>

    这部分主要是设定JSPBOOK站点,其中 path="/jspbook"代表网站名称,即 http://ip_domainName/jspbook;
docBase = "jspbook" 代表站点的目录位置,debug则是设定debug lerel,0表示提供最少的信息,9表示提供最多的信息; reloadable则表示tomcat在执行时,当class ,web.xml被更新过时,都会自动重新加载,不需要重新启动tomcat。

posted @ 2008-08-13 17:36 程序手记 阅读(156) | 评论 (0)编辑 收藏

JAVA基础 (JAVA中的STATIC块) 第十三天(对浪费的前10天表示悔恨)

Java 程序中时常用些 static{}这样的结构。
这样的结构叫 static块,一般是一个类初始化时运行的代码。注意,是类的初始化,不是对象的初始化。
也就是你在定义对象时,他运行的初始化代码,并且只有第一次定义时才运行。之后就不再运行初始化了。
一个类中可以有很多static块。static块按顺序执行。

看以下代码:
public class TestStatic{
    static{
        System.out.println(1);
    }
    static {
        System.out.println(2);
    }
    static {
        Stystem.out.println(3);
    }
    public static void main(String args[]){
        System.out.println(5);
    }
    static {
        System.out.println(4);
    }
}
执行结果是:
1
2
3
4
5
一目了然,首先调用的是static静态块的代码,然后调用启动方法,而STATIC块的执行顺序是由代码的编写顺序执行的过程,STATIC块大家用的比较少,其实就是在对象生成之际产生的一系列的STATIC变量。

posted @ 2008-08-13 16:22 程序手记 阅读(337) | 评论 (0)编辑 收藏