/*下面是javabean他主要是连接数据库,并写了一个加入数据的方法insert(String strTableName, String[] astrFieldname,String[] astrFieldvalue)
Conndb.java
*/
package zzjlib;
import com.codestudio.sql.*;
import java.sql.*;
public class Conndb
{
public java.sql.Statement Stmt; //SQL语句对象
public java.sql.PreparedStatement PStmt;
public java.sql.ResultSet Rs; //结果集对象
public java.sql.Connection Con;
public java.sql.ResultSetMetaData Rsmd;
public String strCon; //数据库连接字符串
public String strSql; //SQL语句
public String TableName="tbreader";//描述表名
public String[] astrFieldname;//数据表字段名
public String[] astrFieldvalue;//字段值
public Conndb()
{
conn();
}
public void conn()
{
try{
strCon="jdbc:poolman://Testdb";
Class.forName("com.codestudio.sql.PoolMan").newInstance();
Con = DriverManager.getConnection(strCon);
Stmt = Con.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE ,java.sql.ResultSet.CONCUR_READ_ONLY); //执行SQL语句
}
catch(Exception e){System.out.println(e.getMessage());}
} public void insert(String strTableName, String[] astrFieldname,String[] astrFieldvalue)
{
if ( astrFieldname.length==1)
{
strSql="insert into "+strTableName+"(" +astrFieldname[0]+")values("+astrFieldvalue[0]+")";
}
else
{
strSql="insert into "+strTableName+"(";
for(int i=0;i<astrFieldname.length; i++)
{
if(i!=astrFieldname.length-1)
{astrFieldname[i]=astrFieldname[i]+",";} strSql+=astrFieldname[i];
}
strSql+=") values(";
for(int i=0;i<astrFieldvalue.length;i++)
{
if(i!=astrFieldvalue.length-1)
{astrFieldvalue[i]=astrFieldvalue[i]+",";}
strSql+=astrFieldvalue[i];
}
strSql+=")";
}
try{ Stmt.executeUpdate(strSql); }
catch(Exception e){e.printStackTrace();}
}
public String[] alterString(String str[])
{
for (int i=0;i<str.length ;i++ )
{
if (str[i]!="now()" && !str[i].equals("now()"))
{
str[i]="'"+str[i]+"'";
}
else
str[i]=str[i];
}
return str;
}/* public String[] getfieldname(String tablename) throws Exception
{
strSql="select * from ";
strSql+=tablename;
Rs=Stmt.executeQuery(strSql);
Rsmd=Rs.getMetaData();
int columncount=Rsmd.getColumnCount();
String[] columnnames=new String[5];
for(int i=0;i<columncount;i++)
{
columnnames[i]=Rsmd.getColumnName(i);
}
return columnnames;
}
*/
public void Query(String sql) throws Exception
{
// ResultSet rs;
Rs=Stmt.executeQuery(sql);
// return rs;
}
public void executeUpdate(String sql) throws Exception
{
Stmt.executeUpdate(sql);
} public void closeconn() throws Exception
{
if (Rs!=null)
{
Rs.close();
}
if (PStmt!=null)
{
PStmt.close();
}
if (Stmt!=null)
{
Stmt.close();
}
if (Con!=null)
{
Con.close();
}
} /*测试用main方法,不可用原因尚不清楚。
public static void main(String args[]) throws Exception
{
Conndb conndb=new Conndb();
conndb.conn();
String tablename="tbborrow";
String[] afieldname;
String[] afieldvalue=new String[3];
afieldname=conndb.getfieldname("tbborrow");
afieldvalue[1]="001";
afieldvalue[2]="zzj";
afieldvalue[3]="now()";
//计算机,"身份证","120224","1","now()","2003-12-20","100","no","010-123456","北京" };
conndb.insert("tbreader",afieldname,afieldvalue);
System.out.println("成功");
}
*/
}
Conndb.java
*/
package zzjlib;
import com.codestudio.sql.*;
import java.sql.*;
public class Conndb
{
public java.sql.Statement Stmt; //SQL语句对象
public java.sql.PreparedStatement PStmt;
public java.sql.ResultSet Rs; //结果集对象
public java.sql.Connection Con;
public java.sql.ResultSetMetaData Rsmd;
public String strCon; //数据库连接字符串
public String strSql; //SQL语句
public String TableName="tbreader";//描述表名
public String[] astrFieldname;//数据表字段名
public String[] astrFieldvalue;//字段值
public Conndb()
{
conn();
}
public void conn()
{
try{
strCon="jdbc:poolman://Testdb";
Class.forName("com.codestudio.sql.PoolMan").newInstance();
Con = DriverManager.getConnection(strCon);
Stmt = Con.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE ,java.sql.ResultSet.CONCUR_READ_ONLY); //执行SQL语句
}
catch(Exception e){System.out.println(e.getMessage());}
} public void insert(String strTableName, String[] astrFieldname,String[] astrFieldvalue)
{
if ( astrFieldname.length==1)
{
strSql="insert into "+strTableName+"(" +astrFieldname[0]+")values("+astrFieldvalue[0]+")";
}
else
{
strSql="insert into "+strTableName+"(";
for(int i=0;i<astrFieldname.length; i++)
{
if(i!=astrFieldname.length-1)
{astrFieldname[i]=astrFieldname[i]+",";} strSql+=astrFieldname[i];
}
strSql+=") values(";
for(int i=0;i<astrFieldvalue.length;i++)
{
if(i!=astrFieldvalue.length-1)
{astrFieldvalue[i]=astrFieldvalue[i]+",";}
strSql+=astrFieldvalue[i];
}
strSql+=")";
}
try{ Stmt.executeUpdate(strSql); }
catch(Exception e){e.printStackTrace();}
}
public String[] alterString(String str[])
{
for (int i=0;i<str.length ;i++ )
{
if (str[i]!="now()" && !str[i].equals("now()"))
{
str[i]="'"+str[i]+"'";
}
else
str[i]=str[i];
}
return str;
}/* public String[] getfieldname(String tablename) throws Exception
{
strSql="select * from ";
strSql+=tablename;
Rs=Stmt.executeQuery(strSql);
Rsmd=Rs.getMetaData();
int columncount=Rsmd.getColumnCount();
String[] columnnames=new String[5];
for(int i=0;i<columncount;i++)
{
columnnames[i]=Rsmd.getColumnName(i);
}
return columnnames;
}
*/
public void Query(String sql) throws Exception
{
// ResultSet rs;
Rs=Stmt.executeQuery(sql);
// return rs;
}
public void executeUpdate(String sql) throws Exception
{
Stmt.executeUpdate(sql);
} public void closeconn() throws Exception
{
if (Rs!=null)
{
Rs.close();
}
if (PStmt!=null)
{
PStmt.close();
}
if (Stmt!=null)
{
Stmt.close();
}
if (Con!=null)
{
Con.close();
}
} /*测试用main方法,不可用原因尚不清楚。
public static void main(String args[]) throws Exception
{
Conndb conndb=new Conndb();
conndb.conn();
String tablename="tbborrow";
String[] afieldname;
String[] afieldvalue=new String[3];
afieldname=conndb.getfieldname("tbborrow");
afieldvalue[1]="001";
afieldvalue[2]="zzj";
afieldvalue[3]="now()";
//计算机,"身份证","120224","1","now()","2003-12-20","100","no","010-123456","北京" };
conndb.insert("tbreader",afieldname,afieldvalue);
System.out.println("成功");
}
*/
}
这个是servlet,主要实现得到addminall.jsp中提交过来的数据,并做相应处理:按指定格式自动生成用户id,然后调用javabean:Conndb.class
连接数据库和加入数据,
大家多给看看啊,提出有价值或中肯意见者我都会给分,要给300分。
*/
import zzjlib.Conndb;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.beans.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.lang.*;
public class addServelt extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse res)
throws IOException, ServletException {
Conndb libcon=new Conndb();
res.setContentType("text/html;charset=gb2312");
PrintWriter out = res.getWriter ();
Calendar rightNow = Calendar.getInstance();
int year=rightNow.get(Calendar.YEAR);
int month=rightNow.get(Calendar.MONTH)+1;
int day=rightNow.get(Calendar.DAY_OF_MONTH);
String stryear=(""+year).substring(2,4);
String strmonth=null;
if(month<10)
{
strmonth="0"+month;
}
else
{
strmonth=""+month;
}
String tablename="tbreader";
String check=request.getParameter("nowornot");
String fieldname[]={"readerid","readername","sex","department","cardtype", "cardid","purview", "starttime","endtime","addtime","zhiya","telephone","address"};
String fieldvalue[]=new String[13];
String strlength=request.getParameter("rlength");
int intlength=Integer.parseInt(strlength);
try
{
libcon.Query("select readerid from tbreader order by addtime desc");
libcon.Rs.first();
String stridtail=libcon.Rs.getString(1).substring(5);
int intidtail=Integer.parseInt(stridtail);
intidtail=intidtail+1;
fieldvalue[1]=request.getParameter("readername");
fieldvalue[0]=request.getParameter("purview")+request.getParameter("startyear").substring(2,4)+request.getParameter("startmonth")+intidtail;
fieldvalue[7]=request.getParameter("startyear")+"-"+request.getParameter("startmonth")+"-"+request.getParameter("startday");
fieldvalue[2]=request.getParameter("sex");
fieldvalue[3]=request.getParameter("department");
fieldvalue[4]=request.getParameter("cardtype");
fieldvalue[5]=request.getParameter("cardid");
fieldvalue[6]=request.getParameter("purview");
if(check!=null)
{
fieldvalue[0]=request.getParameter("purview")+stryear+strmonth+intidtail;
fieldvalue[7]="now()";
}
fieldvalue[8]=request.getParameter("endyear")+"-"+request.getParameter("endmonth")+"-"+request.getParameter("endday");
if(intlength!=0)
{
fieldvalue[8]=(year+intlength)+"-"+month+"-"+day;
}
fieldvalue[9]="now()";
fieldvalue[10]="300";
fieldvalue[11]=request.getParameter("telephone");
fieldvalue[12]=request.getParameter("address");
fieldvalue=libcon.alterString(fieldvalue);
libcon.insert(tablename,fieldname,fieldvalue);
libcon.closeconn();
}
catch(Exception e){out.println("database error!");}
out.println("成功添加记录");
out.println("\r\n<script>\r\n<!--\r\nwindow.location.href=\"../admin/adminall.jsp\";\r\n-->\r\n</script>\r\n</BODY>\r\n</HTML>\r\n");
}
}
并且我现在觉得好象module也并不都是bean,也有可能是servlet。
不知我理解的正确否,
欢迎teddy_huang(生活多美好,睡觉) 兄继续指教,也请大家多批评指教,什么方面都可以,甚至我代码之中的不完善之处,逻辑的不完美之处。
-------------------------
这不对啊你这再加一个control的servlet就完美了,呵呵,建议你研究研究struts,就明白得多了
不好意思,这段我打错了,应该把最后的servlet改成controllor。这样理解对么?
你可以找一本是看看jsp与servlet的交互,里面的可以说是比较简单而经典的控制。
像orreilly的《jsp设计》。
jsp中嵌入了java代码,不符合View的要求
servlet中的代码完全写死,难道每个处理都要各写一个servlet?或者在你那个
servlet中写很多if类的语句?不是Controller!
你的Module呢?Module应是存储用户提交的数据的数据结构,每个form写一个Module类,
或者写一个动态Module类
大家说的好,能再详细点么,我的代码就是拿来批判的,挑错的。多谢大家。集思广益啊!
考官问了我大概20个问题,几乎都不会,全部是j2ee里的知识,比如:你说说stateful session bean 和 stateless session bean 的不同。
我说,stateful session bean 是用来和每一个客户端建立一个联系。比如做购物车你就要用stateful session bean,而stateless session bean 则没有与每个客户端建立联系。我都不懂啊。书到用时方恨少啊。
哎,代码大家继续批和评。我要好好学习一下了!
根据这个思想,sun的petstore例子中,web的controller层有如下几个类:MainServlet:直接面对jsp,初始化一些参数
FlowHandler:由MainServlet调起,控制页面导向
RequestProcessor:由MainServlet调起,处理请求,包括以下步骤:
ServiceLocator以及ServiceLocatorImpl:该类定位不同的services(不同的WebClientController)。简单说,也就是后台(ejb)和web层的接口处
WebClientController以及WebClientControllerImpl:是ejb层的代理。
HTMLAction:根据请求,生成不同的event,传递给后台(即由ServiceLocator定位的WebClientController)总的说来,controller层,根据一大堆配置文件,针对各种请求,去做mapping,然后用这些mapping到的类来处理。
工作寻找中,批评进行中,大家继续。
jsp中嵌入了java代码,不符合View的要求
servlet中的代码完全写死,难道每个处理都要各写一个servlet?或者在你那个
servlet中写很多if类的语句?不是Controller!
你的Module呢?Module应是存储用户提交的数据的数据结构,每个form写一个Module类,
或者写一个动态Module类
struts那东西太复杂了,作大项目也许有用,但是用在轻量级的项目上不就是在用高射炮打蚊子???
大家继续批评啊。对待这样的代码不要留情,批,别给我留面子。三百分还要多一些人才好。
这是什么意思?老兄?