struts2总是返回input

问题描述

最近做一个项目注册的时候,点提交后返回的总是struts2配置文件中input的result页面。代码如下<%@pagecontentType="text/html"pageEncoding="UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title><s:textname="个人信息管理系统->注册"/></title></head><bodybgcolor="#CCCCFF"><s:formaction="registerAction"method="post"><tablealign="center"><tr><tdwidth="40%"><tableborder="2"bgcolor="#AABBCCDD"width="100%"align="center"><tr><tdcolspan="2"align="center"><fontcolor="yellow"><s:textname="请填写以下注册信息"/></font></td></tr><tr><td><s:textfieldname="loginname"label="登录名"/></td></tr><tr><td><s:passwordname="password1"label="密码"size="21"/></td></tr><tr><td><s:passwordname="password2"label="再次输入密码"size="21"/></td></tr><tr><td><s:textfieldname="name"label="用户真是姓名"/></td></tr><tr><td><s:textname="用户性别:"></s:text></td><td><inputtype="radio"name="sex"value="男"checked/>男<inputtype="radio"name="sex"value="女"/>女</td></tr><tr><td><s:textfieldname="birth"label="出生日期"/></td></tr><tr><td><s:textfieldname="nation"label="用户民族"/></td></tr><tr><td><s:selectname="edu"label="用户学历"headerValue="----------请选择----------"headerKey="1"list="{'硕士','博士','教授','本科','专科','高中','初中','小学','其它'}"></s:select></td></tr><tr><td><s:selectname="work"label="用户职称"headerValue="----------请选择----------"headerKey="1"list="{'软件测试工程师','软件开发工程师','教师','学生','职员','经理','老板','公务员','其它'}"></s:select></td></tr><tr><td><s:textfieldname="phone"label="用户电话"/></td></tr><tr><td><s:textfieldname="place"label="用户住址"/></td></tr><tr><td><s:textfieldname="email"label="用户邮箱"/></td></tr><tr><tdcolspan="2"align="center"><inputtype="submit"value="确定"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<inputtype="reset"value="清空"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<s:ahref="http://localhost:8084/ch04/login/index.jsp">返回</s:a></td></tr></table></td></tr></table></s:form></body></html>

解决方案

解决方案二:
下面是对应的ACTIONpackageedu.login.Action;importDBJavaBean.DB;importcom.opensymphony.xwork2.ActionSupport;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.servlet.http.HttpServletRequest;importjavax.swing.JOptionPane;importorg.apache.struts2.interceptor.ServletRequestAware;publicclassRegisterActionextendsActionSupportimplementsServletRequestAware{privateStringuserName;privateStringpassword1;privateStringpassword2;privateStringname;privateStringsex;privateStringbirth;privateStringnation;privateStringedu;privateStringwork;privateStringphone;privateStringplace;privateStringemail;privateResultSetrs=null;privateStringmessage="ERROR";privateHttpServletRequestrequest;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassword1(){returnpassword1;}publicvoidsetPassword1(Stringpassword1){this.password1=password1;}publicStringgetPassword2(){returnpassword2;}publicvoidsetPassword2(Stringpassword2){this.password2=password2;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetSex(){returnsex;}publicvoidsetSex(Stringsex){this.sex=sex;}publicStringgetBirth(){returnbirth;}publicvoidsetBirth(Stringbirth){this.birth=birth;}publicStringgetNation(){returnnation;}publicvoidsetNation(Stringnation){this.nation=nation;}publicStringgetEdu(){returnedu;}publicvoidsetEdu(Stringedu){this.edu=edu;}publicStringgetWork(){returnwork;}publicvoidsetWork(Stringwork){this.work=work;}publicStringgetPhone(){returnphone;}publicvoidsetPhone(Stringphone){this.phone=phone;}publicStringgetPlace(){returnplace;}publicvoidsetPlace(Stringplace){this.place=place;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicvoidsetServletRequest(HttpServletRequesthsr){request=hsr;}publicvoidmessage(Stringmsg){inttype=JOptionPane.YES_NO_OPTION;Stringtitle="信息提示";JOptionPane.showMessageDialog(null,msg,title,type);}@Overridepublicvoidvalidate(){if(getUserName()==null||getUserName().length()==0){addFieldError("userName","登录名字不允许为空!");}else{try{DBmysql=newDB();rs=mysql.selectMess(request,this.getUserName());if(rs.next()){addFieldError("userName","此登录名字已存在!");}}catch(SQLExceptionex){ex.printStackTrace();}}if(getPassword1()==null||getPassword1().length()==0){addFieldError("password1","登录密码不允许为空!");}if(getPassword2()==null||getPassword2().length()==0){addFieldError("password2","重复密码不允许为空!");}if(!(getPassword1().equals(getPassword2()))){addFieldError("password2","两次密码不一致!");}if(getName()==null||getName().length()==0){addFieldError("name","用户姓名不允许为空!");}if(getBirth()==null||getBirth().length()==0||getBirth().equals("yyyy-mm-dd")){addFieldError("birth","用户生日不允许为空!");}else{if(getBirth().length()!=10){addFieldError("birth","用户生日格式为'yyyy-mm-dd'!");}else{Stringan=this.getBirth().substring(4,5);Stringbn=this.getBirth().substring(7,8);if(!(an.equals("-"))||!(bn.equals("-"))){addFieldError("birth","用户生日格式为'yyyy-mm-dd'!");}}}if(getNation()==null||getNation().length()==0){addFieldError("nation","用户民族不允许为空!");}if(getEdu().equals("1")){addFieldError("edu","请选择用户学历!");}if(getWork().equals("1")){addFieldError("work","请选择用户工作!");}if(getPhone()==null||getPhone().length()==0){addFieldError("phone","用户电话不允许为空!");}if(getPlace()==null||getPlace().length()==0){addFieldError("place","用户地址不允许为空!");}if(getEmail()==null||getEmail().length()==0){addFieldError("email","用户email不允许为空!");}}publicStringexecute()throwsException{DBmysql=newDB();Stringmess=mysql.insertMess(request,this.getUserName(),this.getPassword1(),this.getName(),this.getSex(),this.getBirth(),this.getNation(),this.getEdu(),this.getWork(),this.getPhone(),this.getPlace(),this.getEmail());if(mess.equals("ok")){message="SUCCESS";}elseif(mess.equals("one")){message="input";}returnmessage;}}

解决方案三:
然后是最后一个ACTIONpackageDBJavaBean;importJavaBean.UserNameBean;importJavaBean.MyDayBean;importJavaBean.MyFileBean;importJavaBean.MyFriBean;importJavaBean.MyMessBean;importjava.sql.*;importjava.util.ArrayList;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importjavax.swing.JOptionPane;importorg.apache.struts2.interceptor.ServletRequestAware;//实现ServletRequestAware通过IoC方式直接访问Servlet,并通过request获取session对象publicclassDBimplementsServletRequestAware{privateStringdriverName="com.mysql.jdbc.Driver";privateStringurl="jdbc:mysql://localhost:3306/gbk?useUnicode=true&characterEncoding=gbk";privateStringuser="root";privateStringpassword="root";privateConnectioncon=null;privateStatementst=null;privateResultSetrs=null;privateHttpServletRequestrequest;publicDB(){}publicStringgetDriverName(){returndriverName;}publicvoidsetDriverName(StringdriverName){this.driverName=driverName;}publicStringgetUrl(){returnurl;}publicvoidsetUrl(Stringurl){this.url=url;}publicStringgetUser(){returnuser;}publicvoidsetUser(Stringuser){this.user=user;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicvoidsetServletRequest(HttpServletRequesthsr){request=hsr;}//完成连接数据库操作,并生成容器返回publicStatementgetStatement(){try{Class.forName(getDriverName());con=DriverManager.getConnection(getUrl(),getUser(),getPassword());returncon.createStatement();}catch(Exceptione){e.printStackTrace();returnnull;}}//完成注册,把用户的注册信息录入到数据库中publicStringinsertMess(HttpServletRequestrequest,StringuserName,Stringpassword,Stringname,Stringsex,Stringbirth,Stringnation,Stringedu,Stringwork,Stringphone,Stringplace,Stringemail){try{Stringsure=null;rs=selectMess(request,userName);//判断是否用户名已存在,如果存在返回oneif(rs.next()){sure="one";}else{Stringsql="insertintouser"+"(userName,password,name,sex,birth,nation,edu,work,phone,place,email)"+"values("+"'"+userName+"'"+","+"'"+password+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+birth+"'"+","+"'"+nation+"'"+","+"'"+edu+"'"+","+"'"+work+"'"+","+"'"+phone+"'"+","+"'"+place+"'"+","+"'"+email+"'"+")";st=getStatement();introw=st.executeUpdate(sql);if(row==1){//调用,myMessage方法,更新session中保存的用户信息Stringmess=myMessage(request,userName);if(mess.equals("ok")){sure="ok";}else{sure=null;}}else{sure=null;}}returnsure;}catch(Exceptione){e.printStackTrace();returnnull;}}//更新注册的个人信息publicStringupdateMess(HttpServletRequestrequest,StringuserName,Stringname,Stringsex,Stringbirth,Stringnation,Stringedu,Stringwork,Stringphone,Stringplace,Stringemail){try{Stringsure=null;Stringsql="updateusersetname='"+name+"',sex='"+sex+"',birth='"+birth+"',nation='"+nation+"',edu='"+edu+"',work='"+work+"',phone='"+phone+"',place='"+place+"',email='"+email+"'whereuserName='"+userName+"'";st=getStatement();introw=st.executeUpdate(sql);if(row==1){//调用,myMessage方法,更新session中保存的用户信息Stringmess=myMessage(request,userName);if(mess.equals("ok")){sure="ok";}else{sure=null;}}else{sure=null;}returnsure;}catch(Exceptione){e.printStackTrace();returnnull;}}//查询个人信息,并返回rspublicResultSetselectMess(HttpServletRequestrequest,StringuserName){try{Stringsql="select*fromuserwhereuserName='"+userName+"'";st=getStatement();returnst.executeQuery(sql);}catch(Exceptione){e.printStackTrace();returnnull;}}//把个人信息通过MyMessBean,保存到session对象中publicStringmyMessage(HttpServletRequestrequest,StringuserName){try{ArrayListlistName=null;HttpSessionsession=request.getSession();listName=newArrayList();rs=selectMess(request,userName);while(rs.next()){MyMessBeanmess=newMyMessBean();mess.setName(rs.getString("name"));mess.setSex(rs.getString("sex"));mess.setBirth(rs.getString("birth"));mess.setNation(rs.getString("nation"));mess.setEdu(rs.getString("edu"));mess.setWork(rs.getString("work"));mess.setPhone(rs.getString("phone"));mess.setPlace(rs.getString("place"));mess.setEmail(rs.getString("email"));listName.add(mess);session.setAttribute("MyMess",listName);}return"ok";}catch(Exceptione){e.printStackTrace();returnnull;}}

解决方案四:
然后是struts2的配置文件<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><includefile="example.xml"/><!--Configurationforthedefaultpackage.--><packagename="default"extends="struts-default"><actionname="loginAction"class="edu.login.Action.LoginAction"><resultname="SUCCESS">/mainFrame/main.jsp</result><resultname="input">/login/index.jsp</result><resultname="ERROR">/login/index.jsp</result></action><actionname="registerAction"class="edu.login.Action.RegisterAction"><resultname="SUCCESS">/login/index.jsp</result><resultname="input">/login/register.jsp</result><resultname="ERROR">/login/register.jsp</result></action><actionname="upMessAction"class="edu.personManager.Action.UpdateMessAction"><resultname="SUCCESS">/personMessage/lookMessage.jsp</result><resultname="input">/personMessage/updateMessage.jsp</result><resultname="ERROR">/personMessage/updateMessage.jsp</result></action><actionname="upPassAction"class="edu.personManager.Action.UpdatePassAction"><resultname="SUCCESS">/personMessage/lookMessage.jsp</result><resultname="input">/personMessage/updatePass.jsp</result></action><actionname="addFriAction"class="edu.friendManager.Action.AddFriAction"><resultname="SUCCESS">/friendManager/lookFriends.jsp</result><resultname="input">/friendManager/addFriend.jsp</result></action><actionname="findFriAction"class="edu.friendManager.Action.FindFriAction"><resultname="SUCCESS">/friendManager/findFriend.jsp</result><resultname="ERROR">/friendManager/lookFriends.jsp</result><resultname="input">/friendManager/lookFriends.jsp</result></action><actionname="upFriAction"class="edu.friendManager.Action.UpdateFriAction"><resultname="SUCCESS">/friendManager/lookFriends.jsp</result><resultname="input">/friendManager/updateFriend.jsp</result></action><actionname="deleteFriAction"class="edu.friendManager.Action.DeleteFriAction"><resultname="SUCCESS">/friendManager/lookFriends.jsp</result></action><actionname="addDayAction"class="edu.dateTimeManager.Action.AddDayAction"><resultname="SUCCESS">/dateTimeManager/lookDay.jsp</result><resultname="input">/dateTimeManager/addDay.jsp</result><resultname="ERROR">/dateTimeManager/addDay.jsp</result></action><actionname="findDayAction"class="edu.dateTimeManager.Action.FindDayAction"><resultname="SUCCESS">/dateTimeManager/findDay.jsp</result><resultname="input">/dateTimeManager/lookDay.jsp</result><resultname="ERROR">/dateTimeManager/lookDay.jsp</result></action><actionname="upDayAction"class="edu.dateTimeManager.Action.UpdateDayAction"><resultname="SUCCESS">/dateTimeManager/lookDay.jsp</result><resultname="input">/dateTimeManager/updateDay.jsp</result><resultname="ERROR">/dateTimeManager/updateDay.jsp</result></action><actionname="deleteDayAction"class="edu.dateTimeManager.Action.DeleteDayAction"><resultname="SUCCESS">/dateTimeManager/lookDay.jsp</result></action><actionname="addFileAction"class="edu.fileManager.Action.AddFileAction"><interceptor-refname="fileUpload"><paramname="maximumSize">1024000000</param></interceptor-ref><interceptor-refname="defaultStack"/><paramname="savePath">/save</param><resultname="SUCCESS">/fileManager/success.jsp</result><resultname="input">/fileManager/fileUp.jsp</result><resultname="ERROR">/fileManager/fileUp.jsp</result></action><actionname="findFileAction"class="edu.fileManager.Action.FindFileAction"><resultname="SUCCESS">/fileManager/findFile.jsp</result><resultname="input">/fileManager/lookFile.jsp</result><resultname="ERROR">/fileManager/lookFile.jsp</result></action><actionname="deleteFileAction"class="edu.fileManager.Action.DeleteFileAction"><resultname="SUCCESS">/fileManager/lookFile.jsp</result><resultname="ERROR">/fileManager/findFile.jsp</result></action><actionname="downFileAction"class="edu.fileManager.Action.DownFileAction"><paramname="path">/save/${downloadFileName}</param><resultname="SUCCESS"type="stream"><paramname="contentType">application/octet-stream;charset=ISO8859-1</param><paramname="inputName">InputStream</param><paramname="contentDisposition">attachment;filename="${downloadFileName}"</param><paramname="bufferSize">40960</param></result></action></package></struts>

解决方案五:
这么花很难看,你可以设置一个断点在action的validate方法和execute方法的第一行,然后单步跟踪下去,你就会很清晰的看见为何返回input,如果没有进入相应方法,你就要考虑在拦截器设置断点了,目测应该是mysql.insertMess方法失败了,你可以单步跟踪进入这个方法,
解决方案六:
必须错,Stringsql="insertintouser"+"(userName,password,name,sex,birth,nation,edu,work,phone,place,email)"+"values("+"'"+userName+"'"+","+"'"+password+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+birth+"'"+","+"'"+nation+"'"+","+"'"+edu+"'"+","+"'"+work+"'"+","+"'"+phone+"'"+","+"'"+place+"'"+","+"'"+email+"'"+")";这句sql语句肯定有问题。看了下,每个参数都多一对单引号。
解决方案七:
写sql语句要这么写吗,出个错,位置都找不到
解决方案八:
自己单步调试一下吧,看看代码是如何运行的?
解决方案九:
你的request用对了吗
解决方案十:
如果你没定义input却爆了带input的异常可能是表单验证的问题你注解掉action的方法不进行表单验证就行
解决方案十一:
引用5楼fangmingshijie的回复:

必须错,Stringsql="insertintouser"+"(userName,password,name,sex,birth,nation,edu,work,phone,place,email)"+"values("+"'"+userName+"'"+","+"'"+password+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+birth+"'"+","+"'"+nation+"'"+","+"'"+edu+"'"+","+"'"+work+"'"+","+"'"+phone+"'"+","+"'"+place+"'"+","+"'"+email+"'"+")";这句sql语句肯定有问题。看了下,每个参数都多一对单引号。

把单引号删了但还是那个问题返回的依然是input。我是新手多谢帮助。
解决方案十二:
看了头晕总结:稀烂
解决方案十三:
回复于:2013-05-2211:01:43如果你没定义input却爆了带input的异常可能是表单验证的问题你注解掉action的方法不进行表单验证就行
解决方案十四:
你可以通过输出语句去查看下,执行到哪里给返回了。或者用debug,打上单点去进行调试。最好还是用debug去调试下吧!看看是那块的问题。
解决方案十五:
这是你Action中的方法中的问题。
解决方案:
做个注册登录有那么困难啊?好好学习ssh吧
解决方案:
哎哟。。你第二次注册的时候查询肯定有了。。当然返回input页面。//判断是否用户名已存在,如果存在返回oneif(rs.next()){sure="one";}
解决方案:
你注册页面登录名name=“loginname”数据处理页面又定义userName明显不匹配把register.jsp登录名name="userName"就ok了
解决方案:
注意你的那个“出生日期”的提交格式,这个错了就会报这种错误。

时间: 2024-09-27 23:34:26

struts2总是返回input的相关文章

input视图-Struts2中action出现错误返回input的机制

问题描述 Struts2中action出现错误返回input的机制 2C 当action出现错误后,如何返回的input?通过哪个类返回的?希望大神们说的尽量详细点,先谢过了! 解决方案 链接:http://pan.baidu.com/s/1nuUL6OD 密码:igtz 解决方案二: return ""input"";或者return Action.Input;就OK了呀然后返回的就是input 如果你说的是显示错误信息的话调用addFieldError()方法时

struts2 文件上传时,某次上传失败之后的所有上传都返回input,不跳到action

问题描述 在做文件上传时,不加限制上传任意类型文件都成功,但是如果加了"allowedTypes"限制文件类型后,上传正确类型成功,上传错误类型失败,这些都是理所当然的结果.问题是上传错误类型失败后,再上传正确的文件,也跳转到input视图,不经过action.如限制只能上传gif格式文件,第一次上传gif图片返回success:第二次上传非gif文件,返回input:第三次上传gif文件,还是返回input,怎么解决?代码如下:jsp页面: <s:form action =&q

关于struts2请求返回类型在Apache服务器映射路径的问题

问题描述 关于Apache服务器映射路径的问题: 问题如下: 我的实际域名为www.xxxx.com/nmd,在阿帕奇上 映射为:www.xxxx.net,也就是把最后的com/nmd映射为net了.我的访问路径是www.xxxx.net,我的struts2的返回类型为chain,要转发到一个另外一个Action上,我假设转发到yyy.do这个Action上了.问题出现在yyy.do处理后返回到jsp时,路径跳到www.xxxx.com/nmd上去了,而不是开始请求的www.xxxx.net路径

struts2 action返回错误

问题描述 struts2中如果Action业务处理错误,该如何把错误信息返回页面.比如,登录错误,要在页面显示用户名或密码错误.是不是要用到ActionMessage. 解决方案 解决方案二:request.setAttribute...也可以啊,反正他们都用的这个.解决方案三:这个可以随便写,看自己的喜好,即使是在action里自己定义一个存放错误信息的变量,然后在页面上取它的值也一样解决方案四:1>.jsp:<s:actionerror/>2>.action:publicStr

Struts2,返回HTML内容

问题描述 在struts2中,有没有方法,可以直接返回HTML内容啊?我现在的做法 ,是写一个空白页面,然后在action生成那个内容后,显示到页面上,然后在用JS的ajax获取页面内容.不过我始终觉得还要生成内容到页面,在从页面获取,好麻烦哟,有没有像json格式数据一样,可以直接通过action请求就返回的方法呀?? 解决方案 http://blog.sina.com.cn/s/blog_530bf5d20100c15o.html1.可以通过InputStream 返回2.你这种最简单

Struts2 Result 返回JSON对象详解_java

如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持.但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况.本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的. Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串:2.使用Struts2对JSON的扩展.

struts2 result 返回的路径中如果带有描点如 /admin/1.jsp#enter就会报404

问题描述 如题 解决方案 在jsp后面是不能这样写的,瞄点是针对静态界面.jsp是一个动态界面,当你在请求jsp界面的时候,jsp是需要经过编译才能够在页面中显示出来内容的.

Struts2教程4:使用validate方法验证数据

在Struts2中最简单的验证数据的方法是使用validate.我们从ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口.这个接口只有一个validate方法.如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误.并且可使用addFieldError或addActionError加入相

struts2通过action返回json对象_java

其实struts2通过action返回json挺简单的,但是就是老要忘,所以索性写在博客上.好的,开始. 首先是引入必须的jar包: struts2-json-plugin-2.3.24.jar 然后我们再写一个简单的action package com.mz.action; import com.mz.entity.User; import com.opensymphony.xwork2.ActionSupport; public class JsonAction extends Action