用户操作
[即时聊天] [发私信] [加为好友]
曾巧ID:numenZQ
42202次访问,排名2821,好友0人,关注者0人。
numenZQ的文章
原创 29 篇
翻译 16 篇
转载 2 篇
评论 16 篇
最近评论
xh:不推荐修改web.xml,设置java_options更好
numenZQ:补充说明一点,使用java.util.zip包时,是以UTF-8编码格式读取的文件名,因此在中文windows操作系统(Windows操作系统默认字符集为:GBK)中使用时会导致文件名解析错误,因此需要使用org.apache.tools.zip.ZipEntry和 org.apache.tools.zip.ZipOutputStream类来解决这一问题。
numenZQ:这个是需要明确知道字符串的成分,该方法只是为了满足读取不同字符集相应字符串,还是以“多哈亚运会”为例:如果字符集为GBK,截取前6个字节,结果为:“多哈亚”;当字符集为UTF-8时,截取前6个字节,结果则为:“多哈”,这是因为GBK是双字节编码,而UTF-8是三字节变长编码,如果不分字符集来读取对应长度的字串,则会出现字串内容与预期不符,长度错误等问题。
lyazure:仔细看了你的代码,作用是从一个字符串中获取指定字节数的字符,不知道你要这么做的最终目的是用来做什么。除非明确知道字符串的成分,否则这种做法很难做到完美,比如你的代码中,假如出现要从“多哈亚运会”这样的字符串中截取7个字节,最终会截得3个字符。
Alexandre:ab8e44bc75204d49bf0c9fe68a2b2176 matura foto amatoriale
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JSP轻松入门(一)收藏

    新一篇: 3D编程指南第一部分:快速进入移动JAVA 3D编程世界 | 旧一篇: 使用JSR 184技术在3D空间里选中物体

    级别:初级;

     

    基本内容

    首先是用J2SE+TOMCAT搭建开发平台,然后会用实例分别对javabeanservlet进行测试,同时也会谈到一些中文处理上的问题。文章内容可能会有点杂乱和零散,但这也是学习jsp最基础的知识,要想学好jsp还得靠自己多努力学习。

     

    为什么要写这样一篇文章?

    认识我的朋友可能会知道,我平时只是写和翻译一些J2ME方面的开发的文章,而我为什么要写一篇关于JSP入门的文章呢?原因有二,其一,最近小弟也在学习一些与web相关的知识,有不少收获和心得,想告诉大家,好让后来者少走弯路,其二,有位好友最近正准备学习jsp方面的知识,便有了写这篇文章的想法。由于小弟水平有限,如果有任何错误和问题,请及时与我联系e-mail:numenzq@yahoo.com.cn,我好做出纠正和回复。现在就言归正传,进入正题。

     

    系统开发平台配置

    1、  Windows2000 SP5

    2、  J2SE 1.5.0
    下载地址:http://java.sun.com/j2se/1.5.0/download.jsp

    3、  TOMCAT5.5.12
    下载地址:http://tomcat.apache.org/download-55.cgi#5.5.15

    如果你已经安装过上述软件的旧版本,则可以跳过这个步骤看下面的文章,不过我建议你尽量使用最近发布的版本,其好处就不用我多说了吧。如果你还没安装上面的软件,请使用我上面给出的地址下载该软件。下载完后,根据提示安装好相应软件即可,tomcat是压缩吧,直接解压后便可以使用。搭建一个简单的平台就这么简单,你已经开始佩服自己了吧,呵呵~。下面我们将了解如何配置环境变量的。

     

    环境变量配置

           大家都应该知道,编写JAVA程序需要配置环境变量,不过这是一个简单的工作,就让我们轻松的来完成它吧,我们找到修改环境变量的对话框,然后把下面的配置添加进去,当然你也可以在命令行里添加这些配置,不过我相信大家还是愿意使用图形界面哈。不过大家得注意的是,我假设把上面的软件都是直接安装在D:\跟目录下的。

    JAVA_HOME=D:\JAVA\jdk1.5.0_06

    TOMCAT_HOME=D:\apache-tomcat-5.5.15

    path=%JAVA_HOME%\bin

    classpath=.;%JAVA_HOME%\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\common\lib\servlet-api.jar

     

    测试

           现在万事俱备,只差编写代码和测试了。在实际编码之前,我们还是测试一下我们这个开发平台是否正常。我们用经典的hello world来测试J2SE,代码如下:

    public class helloworld {

          

           public helloworld() {}

          

           public static void main(String[] args) {

                  System.out.println("hello,你好!");

           }

    }

           我们把上面这个代码保存在D:\根目录下,在命令行下编译和运行该程序,如果能输出“hello,你好!”则说明你J2SE安装和环境设置没有问题。提示:你也可以使用java –version来检查你的程序是否安装正确。

    现在我们来测试Tomcat吧,在Tomcat安装目录下的bin文件夹里运行startup.bat,启动Tomcat,然后在浏览器里键入:http://localhost:8080,只要能看见那只长得并不怎么样的猫就行了。这样一来,我们既肯定了之前的工作,又可以安心的编码了。如果上面两步测试存在问题的话,你就得认真检查一下了。

     

    实例

           终于开始编码了,现在我们将会编写helloBean.javahelloServlet.java文件,很显然,两个文件是分别通过javabeanservlet的方式在页面上显示“hello,你好!”的。先让我们来看看使用javabean的实现方法吧。

           其实javabean就是一个普通的java类文件,不过需要满足一些特性,比如说:javabean文件里需要一个本类的无参构造函数,属性的get/set方法等。关于javabean的更详细的资料可以参考其他书籍。其实可以把javabean理解为一个提供方法的类,然后在jsp里创建该类的对象,通过这个对象来调用相应的方法而已。Javabean就这么简单。为了让大家容易理解,下面是一个简单的javabean文件。

    //helloBean.java

     

    package hello;

     

    public class helloBean {

           private String str = "hello,你好!";

          

           public helloBean() {}

          

           public String getStr() {

                  return str;

           }

          

           public void setStr(String _str) {

                  str = _str;

           }

    }

     

    在上面的程序中,helloBean有一个属性str,并有与该属性配对的getStrsetStr方面。既然之前说是要在jsp里显示str的内容,那么应该有一个jsp页面来调用它吧,下面我们就来看这个jsp页面是如何实现的:

    <%@ page contentType="text/html;charset=gb2312"%>

     

    <html>

           <head>

                  <title>helloBean Test</title>

           </head>

           <body>

                  <jsp:useBean id="helloBean" scope="session" class="hello.helloBean" />

                  <%= helloBean.getStr() %>

                  <br>

                  <% helloBean.setStr("Hello,world!"); %>

                  <% out.print(helloBean.getStr()); %>

           </body>

    </html>

     

           上面的代码很短,但已经足够实现我们所需要的操作了,关键语句在<body>标签里,正如我们之前所说,先创建一个名为helloBean的对象,说明它的使用范围和类文件所在地址;接下来则是调用getStr方法获得str的值并显示;最后修改str的值后,再次读取该值并显示在屏幕上。

    不过怎样来测试现有的代码呢?这个问题很简单,我们使用的web服务器是tomcat,我们在tomcat在进入webapps目录,为了不和其他项目混淆,我们先为这个项目建立一个文件夹,我取名字为jsp-test;然后在jsp-test里建立WEB-INF文件夹,这个文件夹里存放着这个项目的类文件(classes)、库文件(lib)和配置文件(web.xml)等。因为当客户请求该项目时tomcat服务器会自动根据配置文件在WEB-INF文件下寻找相应的文件,并做出响应。好了,我们现在就试试helloBean,我们得先把helloBean.java编译成helloBean.class文件,如刚才所说,我们把编译好的helloBean.class文件存放到WEB-INF目录下,起目录结构为:D:\apache-tomcat-5.5.15\webapps\jsp-test\WEB-INF\classes\hello。因为helloBean.javahello下,所以helloBean.class也在hello包下,符合相应的包结构。然后再把helloBean.jsp文件保存到jsp-test目录下即可。还不快点启动tomcat,看看我们的成果,访问地址就是之前我们的测试地址加上项目名和文件名,即http://localhost:8080/jsp-test/helloBean.jsp。呵呵,看见效果了吧,下面我们将学习一个简单的servlet

    其实servletjavabean一样,也是一个java类文件,并满足一些特殊要求,如:需要继承ServletHtppServlet类等。我们主要是是servletGETPOST方法来响应页面请求。一个简单的servlet代码如下:

    //helloServlet.java

     

    package hello;

     

    import java.io.IOException;

    import java.io.PrintWriter;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    public class helloServlet extends HttpServlet {

          

           protected void doGet(HttpServletRequest request,

                                              HttpServletResponse response)

                                                     throws ServletException, IOException {

                  doPost(request, response);

           }

          

           protected void doPost(HttpServletRequest request,

                                              HttpServletResponse response)

                                                     throws ServletException, IOException {

                  PrintWriter out=response.getWriter();

                  out.println("<html>");

                  out.println("<head>");

                  out.println("<title>");

                  out.println("helloServlet Test");

                  out.println("</title>");

                  out.println("</head>");

                  out.println("<body>");

                  out.println("hello,你好!");

                  out.println("</body>");

                  out.println("</html>");

                 

                  out.flush();

           }

    }

           可能你也注意到了,helloServlet除了继承了HttpServlet类外,不管是POST还是GET方法时,都是在doPost方法中实现的,这些为了程序的简单易读。当然了,你也可以根据不同的要求来修改代码。还值得注意的是,输出语句里的信息其实就是一个基本的html代码,这也是响应给客户端的信息。同样的,要运行该servlet也需要一个jsp来实现:

    <%@ page contentType="text/html;charset=gb2312"%>

     

    <html>

           <head>

                  <title>helloServlet Test</title>

           </head>

           <body>

                  <form method="post" action="/jsp-test/hello/helloServlet">

                 <input type="submit" value="测试servlet">

                  </form>

           </body>

    </html>

    这个jsp代码很简单,就是当表单里的按钮按下时,通过post方法响应action。还记得先前我说过的配置文件吗?因为调用servlet前需要在配置文件里说明servlet类存放的地址和映射地址,所以我们编写一个web.xml文件如下:该文件应存放在WEB-INF目录下。

    <?xml version="1.0" encoding="ISO-8859-1"?>

     

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

        version="2.4">

       

        <servlet>

                         <servlet-name>helloServlet</servlet-name>

                         <servlet-class>hello.helloServlet</servlet-class>

                  </servlet>

                  <servlet-mapping>

                         <servlet-name>helloServlet</servlet-name>

                         <url-pattern>/hello/helloServlet</url-pattern>

                  </servlet-mapping>

     

    </web-app>

           现在来测试我们的servlet吧!怎么样,能看到“hello,???”,那就恭喜你了,你已经测试成功了。既然是测试成功了,那为什么看不到中文的“你好”呢?这个很简单,只需要修改一个地方就是了,我们打开之前的helloServlet类,在doPost方法的最前面加上:

    response.setContentType("text/html;charset=gb2312");

     

    这样就ok了,你把修改后的helloServlet.java编译后,在启动tomcat运行看看效果吧,现在就能显示中文了:)。虽然在上例的中文问题解决了,但是并没有用传递参数,如果用GET/POST方法来传递参数会是什么样的结果呢?其实大家不用担心,关于这个问题,我觉得ponky在“Tomcat下中文的彻底解决”一文里讲得以已经很清楚了,原文地址是:http://www.matrix.org.cn/resource/article/1/1098.html,其实很简单的,如果通过get方法来传递参数,则需要在D:\apache-tomcat-5.5.15\conf里的server.xml相应位置添加:

    URIEncoding="GBK",添加后为:

    <Connector port="8080" maxHttpHeaderSize="8192"

                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

                   enableLookups="false" redirectPort="8443" acceptCount="100"

                   connectionTimeout="20000" disableUploadTimeout="true"

                   URIEncoding="GBK" />

           如果是使用post方法的话,则需要把

    D:\apache-tomcat-5.5.15\webapps\jsp-examples\WEB-INF\classes\filtersSetCharacterEncodingFilter.class文件复制到你的项目里响应的文件夹下,如果是放在jsp-test项目下,即:

    D:\apache-tomcat-5.5.15\webapps\jsp-test\WEB-INF\classes\filters文件夹里。

     

           然后在web.xml文件里添加如下代码:

    <filter>

        <filter-name>Set Character Encoding</filter-name>

                  <filter-class>filters.SetCharacterEncodingFilter</filter-class>

                  <init-param>

                         <param-name>encoding</param-name>

                         <param-value>GBK</param-value>

                  </init-param>

           </filter>

     

      <filter-mapping>

                  <filter-name>Set Character Encoding</filter-name>

                  <url-pattern>/*</url-pattern>

           </filter-mapping>

     

           这样就可解决中文问题了,下面是ponky写的测试代码,在这里我们就借用来测试一下。

    <%@ page contentType="text/html;charset=gb2312"%>

    <%@ page import="java.util.*"%>

    <%

    String q=request.getParameter("q");

    q = q == null? "没有值" : q;

    %>

    <html>

           <head>

                  <title>Tomcat中文测试</title>

                  <meta http-equiv=Content-Type content="text/html; charset=gb2312">

                  <meta http-equiv=pragma content=no-cache>

           </head>

           <body>

                  你提交了:<%=q%>

    <br>

                  <form action="charTest.jsp" method="post">

                         输入中文:

                         <input type="text" name="q"><input type="submit" value="确定">

                         <br>

                         <a href="charTest.jsp?q=你好">通过get方式提交</a>

                  </form>

           </body>

    </html>

           如果以上所有步骤都成功,能得到正常的结果话,那就得恭喜你了,你就可以根据你的要求来写你的代码:~)为了大家方便,我这里把源文件也传上来提大家下载。

           下载源文件

     

    总结

           这篇文章是关于jsp入门的基本文章,对jsp接触不多或不了解的人,应该会有帮助。这些代码都很简单,是为了方便大家了解。如果大家想深入学习相关知识,可以参考其他教程和文章。另外,为了帮我的朋友入门,下一篇文章将会讲到jsp与数据库连接的相关知识。希望大家多多支持。

    发表于 @ 2006年03月03日 22:58:00|评论(loading...)|编辑

    新一篇: 3D编程指南第一部分:快速进入移动JAVA 3D编程世界 | 旧一篇: 使用JSR 184技术在3D空间里选中物体

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © numenzq