前面的学习笔记1,我记录了Struts2搭建网站框架的小实例
这次,我要在Struts2框架实例的基础上,记录用JDBC链接数据库的过程。这个过程其实最核心的就是dao接口和daoImpl类,这些是直接对数据库进行操作的。
UserDao.java
package org.kingtoon.dao;
import java.sql.Connection;
import org.kingtoon.bean.User;
public interface UserDao {
public Connection getConn();
public void AddUser(User user) ;
public int CheckUser(String username);
//public int GetId(String username);
}
接口文件Dao.java中只做函数声明,不需要写函数代码,有点类似于C++中的.h文件,函数体都写在DaoImpl.java文件中。
UserDaoImpl.java
package org.kingtoon.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.kingtoon.bean.User;
import org.kingtoon.dao.UserDao;
public class UserDaoImpl implements UserDao{
public Connection getConn(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@60.30.69.57:1521:orcl","casp","5Ow7aVKO");
//
return conn;
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
//;
e.printStackTrace();
}
return null;
}
public void AddUser(User user){
Connection conn=getConn();
String sql="insert into SJDZ_ML_INFO values(?,?,?)";
try{
PreparedStatement pst=conn.prepareStatement(sql);
pst.setInt(1,user.getid());
pst.setString(2,user.getUserName());
pst.setInt(3, user.getpid());
pst.executeUpdate();
System.out.println("快去看看数据库有没有增加行!!");
}catch(SQLException e){
e.printStackTrace();
}
System.out.println("okokok");
}
public int CheckUser(String username) {
System.out.println("hfsdkhlasdkhsda");
try {
String sql="select * from SJDZ_ML_INFO where TITLE='"+username+"'";
System.out.println(sql);
Connection conn=getConn();//数据库连接在此执行
PreparedStatement prst=conn.prepareStatement(sql);
java.sql.ResultSet result=prst.executeQuery(sql);
System.out.println("数据库连接成功了!!");
if(result.next())
{
int count=result.getInt(1);
System.out.println(count);
conn.close();
result.close();
return count;
}
else
return 0;
} catch (SQLException e) {
e.printStackTrace();
}
return 1;
}
}
既然还是使用Struts2,所以依然不能缺少Action.java类和web.xml,struts.xml等配置文件
LoginAction.java
package org.kingtoon.action;
import org.kingtoon.bean.User;
import org.kingtoon.dao.UserDao;
import org.kingtoon.dao.impl.UserDaoImpl;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
User user;
UserDaoImpl LoginDao=new UserDaoImpl();
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}
public String Login() throws Exception {
int id=LoginDao.CheckUser(user.getUserName());
// System.out.println(LoginDao.CheckUser(user.getUserName()))
if(id!=0)
{
if(id==user.getid())
return "success";
else
return "input";
}
else return "fail";
}
}
RegisterAction.java
package org.kingtoon.action;
import org.kingtoon.bean.User;
import org.kingtoon.dao.impl.UserDaoImpl;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private User user;
UserDaoImpl RegistDao=new UserDaoImpl();
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}
public String Regist() throws Exception {
int id=RegistDao.CheckUser(user.getUserName());
if(id!=0)
return "findit";
else
{
RegistDao.AddUser(user);
return "success";
}
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.multipart.maxSize" value="10000000000" />
<constant name="struts.multipart.saveDir" value="/tmp" />
<!-- 登陆 -->
<include file="struts-example.xml"/>
<include file="struts-example2.xml"/>
</struts>
struts-example.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example" namespace="/example" extends="struts-default">
<action name="register" class="org.kingtoon.action.RegisterAction" method="Regist">
<result name="success">/Congratulation.jsp</result>
<result name="findit">/Login.jsp</result>
<!-- <result name="input">/Register.jsp</result> -->
</action>
</package>
</struts>
struts-example2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example2" namespace="/example2" extends="struts-default">
<action name="login" class="org.kingtoon.action.LoginAction" method="Login">
<result name="success">/Welcome.jsp</result>
<result name="fail">/Register.jsp</result>
<result name="input">/Login.jsp</result>
</action>
</package>
</struts>
还有另外一个User类
User.java
package org.kingtoon.bean;
public class User {
private Integer id;
private String userName;
private Integer pid;
public int getid() {
return id;
}
public void setid(int id) {
this.id= id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName=userName;
}
public int getpid() {
return pid;
}
public void setpid(int pid) {
this.pid= pid;
}
}
但是我还发现了我这两个笔记中一个错误,就是结构中我还少设计了一层,那就是Service.java。我查到的比较标准的,应该是Dao.java,DaoImpl.java只需要对数据库进行存取查找删除等操作,Action.java,struts.xml对应前台网页传来的数据进行处理和操作,而Service.java中设定的函数要做更加高层次的操作。不过由于我们做的这个网站比较小,作用也不是很明显,此处不做过多演示了。
本文为原创文章,请勿转载。。