公司里至今我觉得学的东西不算多,目前所作的项目框架已经搭好,而我要做的只是添砖加瓦,用的自己的组件,项目中我觉得又回到了很久以前的“胖客户”时代。因为公司这几个组件都要用到js,所以我到目前为止java代码就很少写了,为了不忘却旧时的一点知识,故而自己编写了一个小小的例子。
1.oracle数据库建表:
create table STUDENT
(
ID NUMBER not null,
NAME VARCHAR2(20) default '男',
SEX VARCHAR2(4),
ADDRESS VARCHAR2(40),
MEMO VARCHAR2(60)
) -----向表中添加几条数据
2.写一个与数据库建立的DBHelper类和一个properties文件
package db;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBHelper {
private String driver;
private String url;
private String username;
private String password;
private Connection con;
private boolean isUseTrans = false;
private String configFilePath = "DBConfig.properties";// 路径
public DBHelper() {
readConfig();
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
createConnection();
}
public Connection getConnection(){
return con;
}
private void createConnection() {
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void beginTrans(boolean isUseTrans){
this.isUseTrans = isUseTrans;
try {
if(isUseTrans){
con.setAutoCommit(false);
}else{
con.setAutoCommit(true);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void endTrans(){
if(isUseTrans){
try {
con.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
this.closeConnection();
}
public void rollbackTrans(){
if(isUseTrans){
try {
con.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
this.closeConnection();
}
public void closeConnection() {
try {
if (con != null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void closeStatement(Statement s) {
if (s != null) {
try {
s.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void closeResultSet(ResultSet rs) {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void readConfig() {
Properties p = new Properties();
try {
p.load(this.getClass().getResourceAsStream("/" + configFilePath));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 初始化
this.driver = p.getProperty("driver");
this.url = p.getProperty("url");
this.username = p.getProperty("username");
this.password = p.getProperty("password");
System.out.println("qqqq"+this.driver);
System.out.println("qqqq"+this.url);
System.out.println("qqqq"+this.username);
System.out.println("qqqq"+this.password);
}
public static void main(String[]args){
DBHelper db=new DBHelper();
db.readConfig();
}
}
Proerties文件:DBConfig.properties
#Created by JInto - www.guh-software.de
#Tue Nov 20 16:06:28 CST 2007
driver=oracle.jdbc.driver.OracleDriver
password=xiaobo
url=jdbc:Oracle:thin:@127.0.0.1:1521:orcl
username=xiaobo
3.写一个VO:StuVO.java
package stu;
public class StuVO {
private int id;
private String name;
private String sex;
private String address;
private String memo;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
4.写一个DAO:StuDAO
package stu;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import db.DBHelper;
public class StuDAO {
private DBHelper dbh;
private Connection con;
public StuDAO(DBHelper dbh) {
super();
this.dbh = dbh;
this.con=this.dbh.getConnection();
}
public List getStu(){
List list=new ArrayList();
String sql="select id,name,sex,address,memo from student";
try {
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
StuVO vo=new StuVO();
vo.setId(rs.getInt("id"));
vo.setAddress(rs.getString("address"));
vo.setName(rs.getString("name"));
vo.setSex(rs.getString("sex"));
vo.setMemo(rs.getString("memo"));
System.out.println(rs.getString("name"));
list.add(vo);
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("预编译错误!");
}
return list;
}
public static void main(String[]args){
DBHelper dbh=new DBHelper();
StuDAO sd=new StuDAO(dbh);
sd.getStu();
}
}
5.写一个Servlet(Stunservlet.java)并配置web.xml
Stunservlet.java:
package stu;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import db.DBHelper;
public class Stunservlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action =request.getParameter("action");
if("query".equals(action)){
DBHelper dbh=new DBHelper();
StuDAO std=new StuDAO(dbh);
dbh.beginTrans(false);
List list=null;
list=std.getStu();
request.setAttribute("stulist", list);
request.getRequestDispatcher("/test.jsp").forward(request, response);
}
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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">
<servlet>
<servlet-name>Stunservlet</servlet-name>
<servlet-class>stu.Stunservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Stunservlet</servlet-name>
<url-pattern>/Stunservlet</url-pattern>
</servlet-mapping>
</web-app>
5.jsp页面:test.jsp
在转向到test.jsp之前先建一个index.jsp用与进行转换:
index.jsp:
<form action="<%=path%>/Stunservlet?action=query" method="post">
<input type="submit" value="转向" />
</form>
</body>
test.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>test</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form>
<c:choose>
<c:when test="${not empty requestScope.stulist}">
<table border="1" align="center">
<tr>
<td>ID</td>
<td>姓名</td>
<td>性别</td>
<td>地址</td>
<td>备注</td>
</tr>
<c:forEach var="stu" items="${requestScope.stulist}">
<tr>
<td>${stu.id}</td>
<td>${stu.name }</td>
<td>${stu.sex }</td>
<td>${stu.address}</td>
<td>${stu.memo }</td>
</tr>
</c:forEach>
</table>
</c:when>
<c:otherwise>无记录</c:otherwise>
</c:choose>
</form>
</body>
</html>