由于我之前安装过tomcat,JDK, mysql,所以环境配置不是问题,这里不再赘述。
下面主要是一个servlet连接mysql的一些。
(java忘的差不多了,有些问题不是很好地解释,惭愧,重拾起!!)
首先要掌握servlet的使用(简单的是以下几步):1)编写.java文件,并编译成.class文件;2)
将.
class文件
拷贝到安装
tomcat
的文件夹
webapp
下的
ROOT
下的
INF
里的
classes
文件夹中;3)复制web.xml文件,并在
web-app
标签间加入相应的内容;4)重启tomcat,
访问
http://localhost:8080/***** (“**”是java
文件名
)
访问
.class
文件。
在使用实例时,照猫画虎容易错,因为有很多地方还是需要更改的,如果不知道每一部分的含义,那么改变时就会出错。
servlet部分:该部分需要嵌入web.xml文件的web-app标签间,因为该程序是在.xml文件中进行
注册和映射其访问路径的,这样servlet程序才可以被servlet引擎加载和被外界访问;
一个元素用于注册一个Servlet,它包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名;
一个
元素用于映射一个已注册的
Servlet
的一个对外访问路径,它包含有两个子元素:
和
<</span>url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。
(对外访问路径即:输入的URL是何时,就可以访问到对应注册名称的servlet程序)
(为了搞清楚原理,特地查明了web.xml的常用元素及其加载顺序:
<<span id="1f0be0c9-53ef-4215-886f-a233f2eac55d" ginger_software_uiphraseguid="c8c35c06-911f-4dac-a18f-132c931fa7d3" class="GINGER_SOFTWARE_mark">display-name>定义了WEB应用的名字
<<span id="6ca07312-d2e6-4d2d-9ae2-38f11005436f" ginger_software_uiphraseguid="63401c31-e2a8-4998-9ac6-04a78f4292db" class="GINGER_SOFTWARE_mark">description>
声明WEB应用的描述信息
<<span id="9d19bbc5-f2c0-4636-8dd5-61d9697b0caa" ginger_software_uiphraseguid="5f8d2cd5-4922-43ba-b889-49156499c453" class="GINGER_SOFTWARE_mark">context-param> context-param元素声明应用范围内的初始化参数。 (包括2个,参数名称param-name和参数值param-value)
<<span id="bc511e73-c14c-4774-a282-4ca84d42cd9b" ginger_software_uiphraseguid="c094a4d2-f53c-4cba-b74a-e43efcc52a28" class="GINGER_SOFTWARE_mark">servlet>在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。
<<span id="241a808b-94b2-4c56-9a3e-09a5b1405042" ginger_software_uiphraseguid="692c21af-bb0d-49d0-826c-26311f677cf5" class="GINGER_SOFTWARE_mark">servlet-mapping>服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。
启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点;紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文;然后容器将转换为键值对,并交给servletContext,接下来容器创建中的类实例,创建监听器。
明确:加载顺序与标签在文件中的顺序无关。
其加载顺序是::ServletContext-> listener ->filter -> servlet.
)
下面是实例(亲测可跑通):
import
javax
.servlet
.*;
import
javax
.servlet
.http
.*;
import
java
.
sql
.*;
import
java
.
io
.*;
public class
ServletDemo extends HttpServlet
{
private String dbURL="jdbc:mysql://localhost:3306/***"; // 数据库标识名
private String user="root"; // 数据库用户
private String password="root"; // 数据库用户密码
private Connection con;
public void init
() {
try
{
Class
.
forName
("sun
.
jdbc
.
odbc
.JdbcOdbcDriver");
//装载数据库驱动
con=DriverManager
.
getConnection
(
dbURL
,user
,password); //获取连接
}
catch (Exception ex
){
ex
.
printStackTrace
();
}
}
public void doGet
(HttpServletRequest req
,HttpServletResponse res)
{
try
{
res
.setContentType
("text/html"); //设置类型
//连接并查询数据库
String sqlStr="select * from ***(DB-name)"; //SQL查询语句
Statement st=con
.createStatement
(); //获取PreparedStatement对象
ResultSet rs=st
.
executeQuery
(
sqlStr); //执行查询
//在网页中输出查询结果
PrintWriter out = new PrintWriter
(res
.
getOutputStream
()); //获取输出流
out
.
println
(""); //输出数据
out
.
println
("");
out
.
println
("");
out
.
println
("");
out
.
println
("");
out
.
println
("
");
ResultSetMetaData rsmd = rs.getMetaData(); //获取ResultSetMetaData对象
int colCount = rsmd.getColumnCount(); //获取列数量
out
.
println
("");
for
(
int i=0;
i<<span id="636e64a3-bff1-4a58-9f0b-c537113dfef5" ginger_software_uiphraseguid="85c1cfef-c864-4dda-99e8-6053dc0bbbb1" class="GINGER_SOFTWARE_mark">colCount; i++
){
out.println(""); //获取列标题
}
out
.
println
("</<span id="adfab427-cb4c-44a6-acd5-4d1326bcf262" ginger_software_uiphraseguid="57f6dce3-d211-4663-b14a-cee42fb2c0da" class="GINGER_SOFTWARE_mark">tr>");
while
(
rs
.next
()
)
{ //遍历结果
out
.
println
("");
for
(
int i=0;
i<<span id="4268372c-c7ae-4ff1-9779-5dd6bb2a1be7" ginger_software_uiphraseguid="473a01ea-20f1-46c9-86ef-1be0a6a91a18" class="GINGER_SOFTWARE_mark">colCount; i++) {
out.println(""); //输出数据
}
out
.
println
("</<span id="83be3f00-71a0-492f-b7c1-dd3026e85ac0" ginger_software_uiphraseguid="1f09cf2f-b3b8-427c-8111-4f4d730f438b" class="GINGER_SOFTWARE_mark">tr>");
}
out
.
println
("
");
out
.
println
("");
out
.close
();
//关闭输出流
}
catch (Exception ex
){
ex
.
printStackTrace
();
//输出出错信息
}
}
public void destroy
() {
try {
con
.close
(); //关闭连接
}
catch (SQLException ex) {
ex
.
printStackTrace
();
}
}
public static void main(String[] args){
new
ServletDemo
();
}
}
在使用之前,得先启动mysql创建数据库,这样查询时才有数据返回。
编译为.class文件,按照之前的步骤进行操作。
配置web.xml文件时:注意servlet元素的更改。
重启tomcat,输入网址进行访问。
若遇到404错误,看你web.xml文件中的url是否正确。
我的问题是代码虽跑通了,但最后的页面是白板,应该返回我查询数据库的各个表项。
估计是java代码部分的输出错误。
恶补java,完善用例ing!
| "+rsmd.getColumnLabel(i+1)+" |
|---|