注:
一个jsp里可以有多个表单。
本例中还有一个值得学习的地方是把数据分页。
用mysql和sqlserver数据库实现的方式是不同的。
本例还有两个filter类。
CheckLoginFilter.java是用来阻止没有登录的用户进入后台管理。
后来发现一个问题,就是在登录后,然后退出,再在浏览器里访问main.jsp还是可以进入后台,然后创建一个Nocachefilter.java来阻止浏览器缓存。
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
附录:
1.数据库连接对象(Dbconnection.java)
packagestu.utils;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importorg.junit.Test;
publicclassDbconnection{
protectedstaticStringdbClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
protectedstaticStringdbUrl="jdbc:
sqlserver:
//127.0.0.1:
1433;"
+"DatabaseName=DB_Student";
protectedstaticStringdbUser="sa";
protectedstaticStringdbPwd="1234";
publicConnectionconnect=null;
publicStatementstmt=null;
publicResultSetrs=null;
@Test
publicConnectiongetConnection(){
Connectionconn=null;
try{
if(conn==null){
Class.forName(dbClassName).newInstance();
}
}catch(Exceptionee){
//System.exit(0);
}
try{
conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);
if(conn==null)
System.out.println("数据库名称错误");
Statementst=conn.createStatement();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("数据库连接错误");
}
returnconn;
}
publicResultSetexecuteQuery(Stringsql){
try{
connect=getConnection();
stmt=connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
System.err.println(e.getMessage());
e.printStackTrace();
}
returnrs;
}
//执行添加
publicintexecuteUpdate(Stringsql){
intresult=0;
try{
connect=getConnection();
stmt=connect.createStatement();
result=stmt.executeUpdate(sql);
//System.out.print("添加成功");
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
//e.printStackTrace();
result=0;
}
try{
stmt.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnresult;
}
publicvoidclose(){
try{
if(rs!
=null)
rs.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
if(stmt!
=null)
stmt.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
if(connect!
=null)
connect.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
2.数据实体JavaBean(Classinfo.java)
packagestu.domain;
publicclassClassinfo{
publicstaticfinalintPAGE_SIZE=2;
privateStringclassID;
privateStringgradeID;
privateStringclassName;
publicStringgetClassID(){
returnclassID;
}
publicvoidsetClassID(StringclassID){
this.classID=classID;
}
publicStringgetGradeID(){
returngradeID;
}
publicvoidsetGradeID(StringgradeID){
this.gradeID=gradeID;
}
publicStringgetClassName(){
returnclassName;
}
publicvoidsetClassName(StringclassName){
this.className=className;
}
}
3.抽象数据接口(ClassinfoDao.java)
packagestu.dao;
importjava.util.List;
importstu.domain.Classinfo;
publicinterfaceClassinfoDao{
voidadd(Classinfoclassinfo);
voiddelete(StringclassID);
voiduptate(StringclassID,StringgradeID,StringclassName);
Classinfofind(StringclassID);
List
List
intfindCount();
}
4.数据访问层(Classinfoimp.java):
实现了ClassinfoDao接口
packagestu.dao.imp;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
importstu.dao.ClassinfoDao;
importstu.domain.Classinfo;
importstu.domain.User;
importstu.utils.Dbconnection;
publicclassClassinfoimpimplementsClassinfoDao{
publicvoidadd(Classinfoclassinfo){
Dbconnectionconn=newDbconnection();
Stringsql="Insertinto[tb_classinfo]values('"+classinfo.getClassID()+"','"+classinfo.getGradeID()+"','"+classinfo.getClassName()+"')";
conn.executeUpdate(sql);
conn.close();
}
publicvoiddelete(StringclassID){
Dbconnectionconn=newDbconnection();
Stringsql="deletetb_classinfowhereclassID='"+classID+"'";
conn.executeUpdate(sql);
conn.close();
}
publicvoiduptate(StringclassID,StringgradeID,StringclassName){
Dbconnectionconn=newDbconnection();
Stringsql="updatetb_classinfosetgradeID='"+gradeID+"',className='"+className+"'whereclassID='"+classID+"'";
conn.executeUpdate(sql);
conn.close();
}
publicClassinfofind(StringclassID){
Classinfocl=newClassinfo();
Dbconnectionconn=newDbconnection();
Stringsql="select*fromtb_classinfowhereclassID='"+classID+"'";
ResultSetrs=conn.executeQuery(sql);
try{
while(rs.next()){
cl.setClassID(rs.getString
(1));
cl.setGradeID(rs.getString
(2));
cl.setClassName(rs.getString(3));
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
cl.setClassID(classID);
returncl;
}
publicList
Dbconnectionconn=newDbconnection();
Stringsql="select*fromtb_classinfo";
ResultSetrs=conn.executeQuery(sql);
List
try{
while(rs.next()){
Classinfocl=newClassinfo();
cl.setClassID(rs.getString
(1));
cl.setGradeID(rs.getString
(2));
cl.setClassName(rs.getString(3));
list.add(cl);
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnlist;
}
//SELECTTOP30*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1