我学jsp才1个多月,从c++转java转jsp的。结合自己的理解说一下,可能不对,大家不吝指教。包,类,javaBean分别是什么?? 
================================
包就是类的集合,比如说java.lang“包”里就有各种数据类型的“类”,如Boolean , Byte , Character等。
类?oop最基础的概念,变量、方法都封装在类里。范围太广,我讲不好,自己领悟吧
javabean就是有 无参数构造函数 的类想在想自己写一个类,连接数据库,听说要把它拷到哪...??怎么写??
==================================
……\WEB-INF\classes下,好象是约定成俗的,可以通过配置xml来改
我刚好写了个,
import java.sql.*;
import weblogic.db.jdbc.*;
public class DbConn 
{
   private static final String DRIVER_NAME = "weblogic.jdbc.pool.Driver";
   private static final String CONNECTION_NAME = "jdbc:weblogic:pool:mypool";//连接池,需要配置,可以在论坛或者文档区搜索相关文章
   
   public DbConn() 
   {
    
   }
   
   public Connection getConn() 
   {
Connection conn = null;
Driver drv = null;
try
{
System.out.println("from dbconn,drv start");
drv = (Driver) Class.forName(this.DRIVER_NAME).newInstance();
System.out.println("from dbconn,drv end");
System.out.println("from dbconn,conn start");
conn = drv.connect(this.CONNECTION_NAME,null);
System.out.println("from dbconn,conn end");
}
catch (SQLException e)
{
System.out.println("sql exception : " + e);
}catch (Exception e)
{
System.out.println("exception : " + e);
}

    return conn;    
   }
   
   public void closeConn(ResultSet rs, Statement stm, Connection conn) 
   {
try {
    if (rs != null) {         rs.close();
    }
    if (stm != null) {
        stm.close();
    }     
if (conn != null) { 
   conn.close();
}
} catch (Exception e) {
System.out.println("db close exception!");
}    
   }
   public void closeConn(Statement stm, Connection conn) 
   {
try {
    if (stm != null) {
        stm.close();
System.out.println("close stm");     }     
if (conn != null) { 
   conn.close();
   System.out.println("close conn"); } } catch (Exception e) {
System.out.println("db close exception!");
}    
   }}使用:
    Statement stm = null;
ResultSet rs = null;
DbConn dbConn = new DbConn();
Connection conn = dbConn.getConn();
    try
{
stm = conn.createStatement();//连接数据库
rs = stm.executeQuery(String sqlstr);
                   }
catch (SQLException e)
{
Debug.println("From p_select,sql exception :"+e);
}
finally
{
  dbConn.closeConn(rs,stm,conn);//使用完后把连接放回连接池
}

解决方案 »

  1.   

    兄弟,麻烦你,问一下:
    1.自己写的包,类存成.jsp的文件,还是.java的文件??2.把文件保存到:
    ……\WEB-INF\classes下,好象是约定成俗的,可以通过配置xml来改 我是Tomcat服务器,目录结构基本如下:       bin\
           comm\ 
           conf\
           logs\
           server\
           webapps\
           temp\
         好像有好几个目录下都有WEB-INF\classes这两个子目录,我到底,该放哪个下面??的classes下面???
      
     3.使用(包,类)时,要不要先导入,象:<%@page import="java.util.*"%>这样。。
     我现在保存在server下的子目录下,试了一下,错误:
       org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 1 in the jsp file: /try/try.jspGenerated servlet error:
        [javac] Compiling 1 source file
      

  2.   

    2.把文件保存到:
    ……\WEB-INF\classes下,好象是约定成俗的,可以通过配置xml如果你的网页放在webapp下面的一个文件夹(比如:文件夹aaa),那么就将编译的类放到
    ...webapp\aaa\WEB-INF\classes下
      

  3.   

    你先把tomcat带的例子看看吧,jsp文件在\tomcat\webapps\examples\WEB-INF\classes下,javabean在\tomcat\webapps\examples\WEB-INF\classes下,开始要仔细研究jsp是怎么和bean联系起来的,参数是怎样互相传递的,还要注意\tomcat\webapps\examples\WEB-INF下的.xml文件,那是联系jsp和bean的一个重要步骤,但却是很容易遗漏的。
      

  4.   

    今天刚从实习的地方出来,本来去打算做jsp的。
    不过那里外包的网站都是php的,他们自己的网站又是asp的。
    于是就郁闷了。
    楼主能不能提提现在这三个技术那个机会的比较多。
    今天回来,我也是迷茫中。
    tom的人说,php项目多的忙不过来,看看我实习的地方有没有人能做
    ......php我又不会,失去了个机会
      

  5.   

    php开发起来比较快,asp比较老练,jsp安全,精典...哎正在学,麻烦...,...努力up
      

  6.   


    以前早就跟网友说过要整理一下手头关于JSP的资料,发现实在做不到,太杂了,我的JSP也实在太水。贴两篇自己写的东西吧。
    ---------------------关于tomcat------------------1.问:Tomcat 中如何设置多个虚拟路径?
    答:
    a.   server.xml位置:tomcat\conf\server.xml
    b.   设置虚拟路径通过修改增加server.xml中的 <context> ..</context>中的内容来实现。
    C.   能设置多个虚拟路径吗?能。 说明:各虚拟路径下的.jsp,servlet完全没有关联,各自独立,该路径下不能调用其它路径下的servlet
    d.   修改前源文件的<context> ..</context>内容如下,特别长!!如果要删除这个虚拟路径必须把下面的全部内容删除(注释掉)。
        <!-- Tomcat Examples Context -->
            <Context path="/examples" docBase="examples" debug="0"
                     reloadable="true" crossContext="true">
              <Logger className="org.apache.catalina.logger.FileLogger"
                         prefix="localhost_examples_log." suffix=".txt"
                  timestamp="true"/>
              *********中间省略了六十行代码,,,请注意每个<context>跟</context>都有对应的。
             *****初手可能会在这里犯错!!!!!
              <ResourceLink name="linkToGlobalResource"
                        global="simpleValue"
                        type="java.lang.Integer"/>
            </Context>
    e:增加两个虚拟路径
     其中path代表虚拟目录名称,在网址中使用,如:http://localhost:8080/path1
     docbase代表jsp文件的实际路径,后面的几个参数使用默认参数即可。        <Context path="/path1" docBase="D:\jspsource" debug="0"
                     reloadable="true" crossContext="true" />
                     
            <Context path="/path2" docBase="D:\jspsource2" debug="0"
                     reloadable="true" crossContext="true" />
    也可以用如以形式:        <Context path="/path1" docBase="D:\jspsource" debug="0"
                     reloadable="true" crossContext="true" >  </context>
                     
            <Context path="/path2" docBase="D:\jspsource2" debug="0"
                     reloadable="true" crossContext="true" />  </context>初手容易犯的错误:将自己写的context放在默认的eaxmples的context后面
    如这样;
            <Context path="/examples" docBase="examples" debug="0"
                     reloadable="true" crossContext="true">
            <Context path="/path1" docBase="D:\jspsource" debug="0"
                     reloadable="true" crossContext="true" />
     <Logger className="org.apache.catalina.logger.FileLogger"
                         prefix="localhost_examples_log." suffix=".txt"
                  timestamp="true"/>....这就大错特错了!!!
     <Context path="/examples" docBase="examples" debug="0"
                     reloadable="true" crossContext="true">跟后面的一个</context>对应着,这个<context>在很后面,你要看清楚了^_^
    2.配置servlet时的疑问首先要注意,servlet对应的.class不能直接放在D:\jspsource\WEB-INF\classes目录下,必须为每个servlet放在包里,就是java文件的开头要package ..才行。
    我的servlet的.class放置为: D:\jspsource\WEB-INF\classes\globalPackage\EchoRequestServlet.class
    EchoRequestServlet.java的开头当然还需要:
    package globalPackage;
    ...问:调用一个servlet需要做哪些事?
    答: 将servlet对应的  文件夹\xxx.class  放在D:\jspsource\WEB-INF\classes目录下
         配置web.xml文件
         写jsp文件,其中可以调用你写的servlet了问:将D:\jspsource设为虚拟路径path1后,jsp,servlet放在哪个目录?
    答:下面要自己动手  增加 目录及相关文件  .jsp和.class放在相关目录下。D:\jspsource下新建文件夹 WEB-INF  ( 文件夹名一定要大写)D:\jspsource\WEB-INF下新建文件夹classes  (此处要小写)
    (D:\jspsource\WEB-INF\classes)问:将.class放在D:\jspsource\WEB-INF\classes 后还需要增加该目录到环境变量classpath里面吗?
    答:不需要。tomcat会自动找到 虚拟目录对应的实际目录下的  WEB-INF\classes的.class文件servlet的.class放置好后该配置web.xml了,不然还是找不到servlet的.class。
    问:web.xml文件找不到?在哪里?
    答:一般第一次需要你自己新建,放置到  D:\jspsource\WEB-INF目录下:即:D:\jspsource\WEB-INF\web.xml
    新建太麻烦了,还要自己手写很多代码。现在可以这样做:在你下载tomcat的文件夹里面有一个web.xml,路径为:C:\Tomcat\webapps\ROOT\WEB-INF
    把里面的web.xml  copy到我们的D:\jspsource\WEB-INF   文件夹下。
    第一次建好web.xml之后,以后只需要在里面改配置就可以了。问:增加一个servlet后如何配置web.xml
    答:我增加了一个D:\jspsource\WEB-INF\classes\globalPackage\EchoRequestServlet.class文件,需作如下修改<servlet>
           <servlet-name>EchoRequestServlet</servlet-name>
       <servlet-class>globalPackage.EchoRequestServlet</servlet-class>
       </servlet>
       <servlet-mapping>
           <servlet-name>EchoRequestServlet</servlet-name>
       <url-pattern>/servlet/EchoRequest</url-pattern>
       </servlet-mapping>增加位置:

    <web-app>
      <display-name>Welcome to Tomcat</display-name>
      <description>
         Welcome to Tomcat
      </description>跟
    </web-app>
    之间。说明:  <servlet-class> 为类名,注意前面肯定要包名的,因为servlet的类必须放在包里,前面已经说过。
    <url-pattern>指访问此servlet时用这个路径访问,在.jsp文件中只用到它。自己随便填什么都行,不过别太离谱^_^servlet的class放好了,也配置好了。现在写jsp访问呵。问:我照书上写的<form method="Post" action="/servlet/EchoRequest">  怎么最后访问网页时还是报错说找不到类。
    把action后的/去掉试试...即: <form method="Post" action="servlet/EchoRequest">... 应该可以了吧^_^3
    附:
    问:怎么报错:description The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL). 答:我写代码又马乎了:(  我的form提交用的post,,,而servlet中重写的是doGet  ,不一致~~~~~~~ 
      

  7.   

    jsp入门不要太简单,当然你没java基础就稍慢,我看jsp是从前天晚上边打牌开始
    现在写好一个聊天室和留言本了,我想你半个月看,肯定够了
      

  8.   

    http://expert.csdn.net/Expert/topic/2372/2372751.xml?temp=.3406946and  
    1.关于forward
    答:forward定位到其它页时,原网页的网址不变,在刷新时定位页与被定位页同时会刷新
    注1:param,value的值都要用字符串值.forward.jsp文件<jsp:forward page="/subpath1/forward/one.jsp">
    <jsp:param name="p1" value="pv1"/>
    </jsp:forward>one.jsp文件<%= request.getParameter("p1") %>2.关于一个java文件中类的个数
    一个java文件中的类只能一个是public,其它的把public 去掉即可.
    访问同一个包下的类不需要import.3.一个奇怪问题,getXXX与property="XXX"看看这个  counter2.java如下:
    package counter;
    public class counter2 extends counter{
    int newf=5 ;

    public int getXXX(){
    return newf ;
    }
    }
    jcc 说:
    下面的一句代码居然能正确访问,并返回newf中的值!
    <jsp:getProperty name="counter" property="XXX"/>
    </P>通过属性XXX访问类时,它会自动找到getXXX并返回相应值.4.如果单一的成员变量设置我会用set方法,而用<jsp: setProperty name="mybean" property="*" />可以一次性设置很多变量a.加* 是什么意思?是这样啊,一个表单中有n个表单元素,如文本框等,每个元素都有一个name,如果这个name属性与bean中成员变量的名字一样的,并且在bean中对每个成员变量都有set和get方法,则表单提交后,(如提交到save.jsp页面)在save.jsp页面中用到这个bean,并且用了如上带*的set方法,就不用一个一个request表单中的值,再一个一个set了,这样一次性就将调用所有的set方法

    a.jsp文件<%@ page contentType="text/html; charset=gb2312" import="java.util.*"%>
    <a href="b.jsp?a=111&b=222&c=333">b.jsp</a>
    --------------------b.jsp文件:<%@ page contentType="text/html; charset=gb2312" import="java.net.*"%>
    <jsp:useBean id="myBean" class="counter.testBean" scope="page"/>
    <jsp:setProperty name="myBean" property="*" />
         
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body leftmargin="0" topmargin="0">
    <%=myBean.geta()%><br>
    <%=myBean.getb()%><br>
    <%=myBean.getc()%>
    </body>
    </html>
    --------------------
    testBean.java文件package counter;
    import java.util.*;public class testBean {
        public String a;
        public String b;
        public String c; //===================
    public void seta(String a) {
    this.a = a;
    } public String geta() {
    return a;
    }
    //===================
    public void setb(String b) {
    this.b = b;
    } public String getb() {
    return b;
    }
    //===================
    public void setc(String c) {
    this.c = c;
    } public String getc() {
    return c;
    }
    //===================}==========================================================================================
    5.jsp文件的一个form中 :name相同的radiobutton是同一组单选按钮.是通过其value属性来取值
    例:
        <label> 
        <input type="radio" name="RbtnSex" value="1">
        男</label>
        <br>
        <label> 
        <input type="radio" name="RbtnSex" value="0">
        女</label>
    6.dreamwea中列表框的添加:加了select之后,然后再修改它的属性"列表值“7.dreamwea中能否直接测试jsp文件?
    000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000==================================================================================================================================================================================================
    答:8.dreamwea使用说明:
    a . F4用来 隐藏非代码面板,显示非代码面板
    b. 窗口下的用来显示或隐藏各个具体的面板
    c. shift+Enter : 相当于<br>
    =================================================================================================
    9.新建的一个最简单的框架,怎么报错:找不到右边一个frame的文件.在我的文件夹里明明有这个文件!
    =================================================================================================
    答:
    答:那个frame1.jsp有问题, 它的脚本语言中,charset=  没说明等于什么了 ,后面有errorPage。
    =================================================================================================
    10.关于网页跳转
    =================================================================================================
    答:a. response.sendRedirect("http://localhost:8888/test2/subpath1/response/a.jsp") ;网址会发生变化
    b. jsp:forward  网址不会发生变化
    c. <a href>aaa</a>
    d. 表单的数据提交,让其它页来处理=================================================================================================
    11.jsp中import多个包 怎么写
    =================================================================================================
    用逗号隔开,如
    <%@ page import="java.util.Vector,java.util.Hashtable,java.util.Date" %>
    12.  Vector类型显示出来的字符串多了"[","]"是怎么回事
    <%
    //初始化聊天信息
    Vector chatMsgVector = new Vector() ;
    chatMsgVector.addElement("欢迎来到JCC的聊天室!<br>") ;
    chatMsgVector.addElement("为中国的今天加油<br>") ;

    getServletContext().setAttribute("chatMsg",chatMsgVector) ;
    %>
    <%= getServletContext().getAttribute("chatMsg")
    %>
    的显示结果 如下:[欢迎来到JCC的聊天室!
    , 为中国的今天加油

    --------------
    答:
    =================================================================================================
    13.为什么要用Hashtable,如下:
    <%
    Hashtable userLife = new Hashtable() ;
    Hashtable userIP = new Hashtable() ;

    Date initTime = new Date() ;
    String initIP = "192.168.0.13" ;

    userLife.put("init", new Long(initTime.getTime())) ;
    userIP.put("init", initIP ) ; getServletContext().setAttribute("userLife",userLife) ;
    getServletContext().setAttribute("initIP",initIP) ;
    %>
    =================================================================================================
    答:
    用hashtable就是将一些信息存入到hashtable中啊,是存放数据的一种途径
    14.
    <title>发送聊天信息</title>
    <script language="JavaSciprt" type="text/javascript">
    function setCookie()
    {
    document.cookie=form1.toTalk.selectedIndex+"#" ;
    }
    </script>
    </head>
    这个地方为什么要用javascript,这个功能不能用java实现吗?答:
    java代码运行于服务器端servlet容器,即web服务器,javascript由浏览器来解释
    15.我的jsp写错后,怎么访问时resin不报编绎错误,而总说找不到那个JSP文件答:是你用了errorPage了,把那句去掉就可以了16.我刚才的主要目的就是看  编绎的报错信息 有点问题,它现在报错:java.lang.NullPointerException
    at _sendmsg__jsp._jspService(/sendmsg.jsp:42)
    错误在第四十二行,而实际我那条语句是在四十二行之前的一条语句,你有没遇到这种问题 ---------
    答;有时会遇到一行到两行的差距 17.
    1.问:同一个网页同样的内容在不同时候访问会得以不同的结果?
    操作步骤如下:
    a.<%--
    ....
    getServletContext().setAttribute("chatUser",chatUser) ;
     %-->
    这段代码开始是注释的,就是说开始没有这段代码。我的这个JSP文件中有如下语句:Vector tempuser=(Vector)getServletContext().getAttribute("chatUser") ;访问网页时就报了NULLPOINTER 的空指针的错误 
    b.后来我把这段代码取消了注释,让这段代码生效,这个时候访问网页通过了。
    c.我再次加了注释,让这段代码无效,这个时候访问网页居然不报空指针的错误了!!!!!! 
    [↑]答:你试图将一个为null的OBJECT转换成一个Vector是会报错的,你取消注释后,会将一个对象存入ServletContext环境中,再注释这个变量已在ServletContext环境中存在,所以这时就不会报错了 2.问:
    我从另一个窗口访问网页依然不会报错。那我只有重启resin 才能看到真正的效果? 答:重启resin,ok!
    18.JSP你用到单步调试没有? 
    答:
    1.你自己写打印语句啊
    2.JBUILDER据说有这种功能。
    3.eclipse只能调试到JSP用到的中间文件,不能调到JAVA脚本.19.javascript中用id还是name 来标志form,输入框之类的元素
    答;
    因为id,和name都可以用来描述一个表单元素,所以是都可以的,不过同一个表单元素最好id和name属性一样,这样更利于控制 .