我学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);//使用完后把连接放回连接池
}
================================
包就是类的集合,比如说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);//使用完后把连接放回连接池
}
解决方案 »
- struts2 select标签 获取 Action值 报错
- 请问hibernateTemplate如何保存关联对象呢?谢谢了!
- 如何来设计新闻发布系统的数据库
- jsp include 乱码
- 提交表单后提示URL: Unable to open location: D:\JAVA源程序\myp\mystruts\WEB-INF\login.jsp?name=1212121212&pwd=221313132&b1=CCE1BD
- 插入sql 语句中怎么用变量啊?
- 数据库操作的问题,请高手帮忙。急!!!
- 能否在页面设置一个按钮,点击的时候,保存本页面为指定目录下的指定文件(在线等待)
- s1sh报错
- 我来求助了,关于servlet的一个小作业··
- 如何在tomcat4.1的server.xml中设置字符集为UTF-8?
- 在jsp中怎样用替换函数replace呢..
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
……\WEB-INF\classes下,好象是约定成俗的,可以通过配置xml如果你的网页放在webapp下面的一个文件夹(比如:文件夹aaa),那么就将编译的类放到
...webapp\aaa\WEB-INF\classes下
不过那里外包的网站都是php的,他们自己的网站又是asp的。
于是就郁闷了。
楼主能不能提提现在这三个技术那个机会的比较多。
今天回来,我也是迷茫中。
tom的人说,php项目多的忙不过来,看看我实习的地方有没有人能做
......php我又不会,失去了个机会
以前早就跟网友说过要整理一下手头关于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 ,不一致~~~~~~~
现在写好一个聊天室和留言本了,我想你半个月看,肯定够了
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属性一样,这样更利于控制 .