浏览 3557 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-09-29
create table SYSUSER ( USERID VARCHAR(32); not null, USERNAME VARCHAR2(20);, USERPASSWORD VARCHAR2(20);, LASTLOGIN DATE, constraint PK_SYSUSER primary key (USERID); );[ 实现添加删除更新的操作。现在添加删除都没有问题。更新的时候出现了乱码。我用了“国际化资源文件”写了一个filter,代码如下。 package com.DBStruts.util; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class SetEncodeFilter implements Filter { protected FilterConfig filterConfig = null; protected String defaultencoding = null; public void init(FilterConfig arg0); throws ServletException { this.filterConfig = arg0; //获取系统缺省语言编码 关于更新的代码如下SysuserAction.java: //Created by MyEclipse Struts // XSL source (default);: platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.7.200/xslt/JavaClass.xsl package com.yourcompany.struts.action; import java.util.Iterator; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.hibernate.HibernateException; import org.apache.struts.action.Action; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.util.MessageResources; import com.DBStruts.demo.SysuserMap; import com.DBStruts.demo.SysuserQueryMap; import com.yourcompany.struts.form.SysuserForm; /** * MyEclipse Struts * Creation date: 09-26-2004 * * XDoclet definition: * @struts:action path="/sysuser" name="sysuserForm" input="/sysuser/editsysuser.jsp" scope="request" validate="true" * @struts:action-forward name="/sysuser/editsysuser" path="/sysuser/editsysuser" */ public class SysuserAction extends Action { // --------------------------------------------------------- Instance Variables // --------------------------------------------------------- Methods /** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response);throws Exception { /**初始化系统语言资源*/ Locale local = getLocale(request);; MessageResources messages = getResources(request);; //用户请求时所指明的请求类型 String action = request.getParameter("act");; //获取到处理表单的内容formbean SysuserForm sysuser = (SysuserForm);form; //判断处理请求并进行相应的处理 if(action == null || action.equals("list"););{ SysuserQueryMap sqm = new SysuserQueryMap();; Iterator sysuserlist = sqm.findAllSysuser();; //将用户列表压入了bean中 request.setAttribute("sysuserlist",sysuserlist);; action = "list"; }else if(action.equals("create"););{ //如果请求类型为create request.setAttribute("sysuserForm",new SysuserForm(););; action = "create"; }else if(action.equals("add"););{ //如果处理请求类型为add SysuserMap sysusermap = new SysuserMap();; try{ sysusermap.createSysuser(sysuser);; //加入成功,我们在接着加入下一个用户 request.setAttribute("sysuserForm",new SysuserForm(););; action = "create"; }catch(HibernateException e);{ //存入数据库出错 ActionErrors errors = new ActionErrors();; errors.add( ActionErrors.GLOBAL_ERROR, new ActionError("error.database.save",e.toString();); );; this.saveErrors(request,errors);; //将当前数据回显,并显示用户重新输入 request.setAttribute("sysuserForm",sysuser);; action = "create"; } }else if(action.equals("edit"););{ //请求类型为edit SysuserQueryMap sqm = new SysuserQueryMap();; String uid = request.getParameter("userid");; //从数据库中取得这个用户的信息,然后将这个用户信息压入FormBean中 request.setAttribute("sysuserForm",sqm.getSysuserByID(uid););; }else if(action.equals("update"););{ //请求类型为update System.out.println("sysuser.getUserid1::::::::::" + sysuser.getUserid(););; System.out.println("sysuser.getUsername1::::::::::" + sysuser.getUsername(););; //sysuser.setUsername(new String(sysuser.getUsername();.getBytes();,"8859_1"););; SysuserMap sysusermap = new SysuserMap();; sysusermap.updateSysuser(sysuser);; SysuserQueryMap sqm = new SysuserQueryMap();; Iterator sysuserlist = sqm.findAllSysuser();; //将用户列表压入了bean中 request.setAttribute("sysuserlist",sysuserlist);; action = "list"; }else if(action.equals("delete"););{ //如果处理请求为delete SysuserMap sysusermap = new SysuserMap();; String uid = request.getParameter("userid");; try{ sysusermap.deleteSysuser(uid);; SysuserQueryMap sqm = new SysuserQueryMap();; Iterator sysuserlist = sqm.findAllSysuser();; //将用户列表压入了bean中 request.setAttribute("sysuserlist",sysuserlist);; }catch(HibernateException e);{ ActionErrors errors = new ActionErrors();; //如果出错就压一个错误到全局的错误中 errors.add( ActionErrors.GLOBAL_ERROR, new ActionError("error.database.delete",e.toString();); );; this.saveErrors(request,(ActionErrors); response);; } action = "list"; } //从定义中获取View路径,并转发至View return mapping.findForward(action);; } } SysuserMap.java 代码 package com.DBStruts.demo; import java.util.Calendar; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import com.DBStruts.dao.AbsBaseMap; import com.DBStruts.db.Sysuser; import com.yourcompany.struts.form.SysuserForm; /** * @author Administrator * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class SysuserMap extends AbsBaseMap { /** * 增加一条记录,在VO层,我们使用的数据类型为SysuserForm,所以增加 * 的参数一定是SysuserForm * @param sysuserForm * @throws HibernateException */ public void createSysuser(SysuserForm sysuserForm);throws HibernateException{ //使用 sysuserForm的相关属性新建sysuser实例 Sysuser sysuser = new Sysuser( sysuserForm.getUsername();, sysuserForm.getUserpassword();, Calendar.getInstance(); );; //启动事务 Session session = this.beginTransaction();; try{ //新增这个实例到数据库 session.save(sysuser);; //commit this.endTransaction(true);; }catch(HibernateException e);{ //rollback this.endTransaction(false);; throw e; } } /** * 更新一个sysuser * @param sysuserForm 包含更新内容的sysuser form bean * @throws HibernateException */ public void updateSysuser(SysuserForm sysuserForm);throws HibernateException{ /**使用sysuserForm的相关属性新建sysuser实例*/ Sysuser sysuser = new Sysuser( sysuserForm.getUserid();, sysuserForm.getUsername();, sysuserForm.getUserpassword();, Calendar.getInstance(); );; //sysuser.setUserid(sysuserForm.getUserid(););; System.out.println("sysuser.getUserid2::::::::::" + sysuser.getUserid(););; System.out.println("sysuser.getUsername2::::::::::" + sysuser.getUsername(););; System.out.println("sysuserForm.getUsername2:::::::::" + sysuserForm.getUsername(););; System.out.println("userpassword::::::::::" + sysuser.getUserpassword(););; /**启动事务*/ Session session = this.beginTransaction();; try{ session.clear();; //更新这个实例到数据库中 session.update(sysuser);; //commit this.endTransaction(true);; }catch(HibernateException e);{ //rollback this.endTransaction(false);; throw e; } } /** * 删除一般都会是使用用户ID来删除,所以参数可以是带有用户ID的formbean或是用户ID * @param sysuserForm 带有用户ID的formbean * @throws HibernateException */ public void deleteSysuser(SysuserForm sysuserForm);throws HibernateException{ String userid = sysuserForm.getUserid();; /**该方法下面定义*/ this.deleteSysuser(userid);; } /** * 根据用户ID来删除用户 * @param userid 用户ID * @throws HibernateException */ public void deleteSysuser(String userid);throws HibernateException{ Session session = this.beginTransaction();; try{ //先向数据库中查询是否有这个用户 Sysuser sysuser = (Sysuser);session.load(Sysuser.class,userid);; //删除它 session.delete(sysuser);; this.endTransaction(true);; }catch(HibernateException e);{ this.endTransaction(false);; } } } 我贴张控制板打印的内容, 虽然打印的内容都没有乱码,但数据库中更新的记录的username字段是乱码,别的字段没有乱码。显示在界面的也是乱码。 ----------------------------------- 哪位朋友知道怎么解决阿?能帮帮我么? 如果我没说清楚,欢迎加我qq: 327278581 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-09-29
我换成mysql的数据库,(只是用mysql建立了个表)改了hibernate.config.xml文件结果添加删除都没问题。再更新的时候,反映出来的效果是,页面长时间不进行跳转,myeclipse界面发生变化,如我的抓图所示,这时候发现数据库数据已经改变,如果是汉字则乱码,英文则更改完成。
------------------------------------------ 难道没人帮帮我么? |
|
返回顶楼 | |
发表时间:2004-09-30
你用Mysql的时候在连接字符串后面加上
jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=gb2312 了吗,就是encoding |
|
返回顶楼 | |
发表时间:2004-09-30
慕容姐姐 写道 我换成mysql的数据库,(只是用mysql建立了个表)改了hibernate.config.xml文件结果添加删除都没问题。再更新的时候,反映出来的效果是,页面长时间不进行跳转,myeclipse界面发生变化,如我的抓图所示,这时候发现数据库数据已经改变,如果是汉字则乱码,英文则更改完成。
------------------------------------------ 难道没人帮帮我么? 这张图不就是调试模式么,点击 java perspective view就可以转换回去,至于乱码,换个oracle驱动试试看 ,出了classes12好像有个ojdbc14.jar可以用。 |
|
返回顶楼 | |
发表时间:2004-09-30
十因为更新的方法不对,应该这样写,
public void updateSysuser(SysuserForm sysuserForm);throws HibernateException{ /**使用sysuserForm的相关属性新建sysuser实例*/ /**启动事务*/ Session session = this.beginTransaction();; try{ //session.clear();; Sysuser sysuser = (Sysuser);session.load(Sysuser.class,sysuserForm.getUserid(););; sysuser.setUsername(sysuserForm.getUsername(););; sysuser.setUserpassword(sysuserForm.getUserpassword(););; session.update(sysuser);; //commit this.endTransaction(true);; }catch(HibernateException e);{ //rollback this.endTransaction(false);; throw e; } } 谢谢楼上2位朋友了。 看错了,是1位朋友2次回答我 |
|
返回顶楼 | |