报错java.lang.NoSuchMethodException怎么解决?

tinasky123 2010-03-05 03:04:49
错误如下:

严重: Servlet.service() for servlet action threw exception
java.lang.NoSuchMethodException: Action[/stuInfo] does not contain specified met
hod (check logs)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:
264)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProces
sor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102
)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)



我的action是:

public class UserInfoAction extends DispatchAction {

private UserBiz biz = new UserBizImpl();

public ActionForward doLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

UserInfoForm userInfoForm = (UserInfoForm) form;// TODO Auto-generated method stub
Admin admin = new Admin();
admin.setId(userInfoForm.getId());
admin.setUsername(userInfoForm.getUsername());
admin.setPassword(userInfoForm.getPassword());
if (biz.login(admin)) {
HttpSession session = request.getSession();
session.setAttribute("admin", admin);
return mapping.findForward("login_success");
}
return mapping.findForward("login_fail");
}

}


form如下:

public class UserInfoForm extends ActionForm {

private Integer id;
private String username;
private String password;



public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}


}


dao如下:

public class UserDaoImpl implements UserDao {
public boolean isExist(Admin admin) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DBGet.getConn();
String sql = "select * from admin where username=?";
ps = conn.prepareStatement(sql);
ps.setString(1, admin.getUsername());
rs = ps.executeQuery();
if (rs.next()) {
if(admin.getPassword().equals(rs.getString("password"))) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBGet.closeResultSet(rs);
DBGet.closePreparedStatement(ps);
DBGet.closeConnection(conn);
}

return false;
}


这种情况怎么改呢?哪里错了?请教大家
...全文
24696 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzju64676266 2010-03-05
  • 打赏
  • 举报
回复
引用 3 楼 bearkin 的回复:
说你方法找不到了 你就看看你跳转的时候后面的method是不是不存在在这个Action里啊 细心点咯~



正解,没有找到相当的方法,看方法名称有没有存在DispatchAction 在配置文件中要配置一个parameter
xubin2468 2010-03-05
  • 打赏
  • 举报
回复
在页面调用/stuInfo时method=doLogin在页面传递的时候没有写,导致在UserInfoAction中找不到这个Action方法
dinghun8leech 2010-03-05
  • 打赏
  • 举报
回复
八成是因为包导错了。
BearKin 2010-03-05
  • 打赏
  • 举报
回复
说你方法找不到了 你就看看你跳转的时候后面的method是不是不存在在这个Action里啊 细心点咯~
floger 2010-03-05
  • 打赏
  • 举报
回复
应该是你的配置文件不对,方法没有找到得问题
sotom 2010-03-05
  • 打赏
  • 举报
回复
路过,看看
dinghun8leech 2010-03-05
  • 打赏
  • 举报
回复
引用 14 楼 tinasky123 的回复:
原因在10楼。至于后面的是接口里写错了。

谢谢。
tinasky123 2010-03-05
  • 打赏
  • 举报
回复
引用 13 楼 dinghun8leech 的回复:
引用 12 楼 tinasky123 的回复:我解决了,谢谢大家!
原因是?


原因在10楼。至于后面的是接口里写错了。
dinghun8leech 2010-03-05
  • 打赏
  • 举报
回复
引用 12 楼 tinasky123 的回复:
我解决了,谢谢大家!

原因是?
tinasky123 2010-03-05
  • 打赏
  • 举报
回复
我解决了,谢谢大家!
xinlan1022 2010-03-05
  • 打赏
  • 举报
回复
引用 5 楼 xubin2468 的回复:
在页面调用/stuInfo时method=doLogin在页面传递的时候没有写,导致在UserInfoAction中找不到这个Action方法



............
tinasky123 2010-03-05
  • 打赏
  • 举报
回复
我知道了,我在jsp里的action写错了……应该是userInfo.do我写成了另一个了,难怪找不到方法……

可是还是登陆不上,这回不报错了,但就是跳转不过去怎么回事?是连接数据库的语句写错了还是怎么了呀
soulx 2010-03-05
  • 打赏
  • 举报
回复
你要像调用edu.ustb.score.web.action.UserInfoAction中的doLogin方法。

parameter="doLogin"
soulx 2010-03-05
  • 打赏
  • 举报
回复
edu.ustb.score.web.action.UserInfoAction
这个类中有operate这个方法吗?
tinasky123 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 wzju64676266 的回复:
引用 3 楼 bearkin 的回复:说你方法找不到了 你就看看你跳转的时候后面的method是不是不存在在这个Action里啊 细心点咯~


正解,没有找到相当的方法,看方法名称有没有存在DispatchAction 在配置文件中要配置一个parameter


配置文件应该没错啊

<action
attribute="userInfoForm"
name="userInfoForm"
parameter="operate"
path="/userInfo"
scope="request"
type="edu.ustb.score.web.action.UserInfoAction">
<forward name="login_fail" path="/index.jsp" />
<forward name="login_success" path="/manage.jsp" />
</action>

我有配置parameter啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧