下面我把我所有代码贴出来
 登录页面 login.jsp
-------------------------------------------------------------------
<%@ page language="java"  pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>登录页面</title>
  </head>
  <body>
  <form action="login.action" method="post">
  <table align="center" border=1  width="300" bgcolor=#F5FFE1>
   <tr><td colspan="2" align="center"  width="250" bgcolor="#CCCCFF">用户登录界面</td></tr>
<tr><td width="50">姓名:</td><td><input type="text" name="username"/></td></tr>
<tr><td width="50">密码:</td><td><input type="password" name="password" size=22/></td></tr>
<tr><td  align="center" colspan=2><input type="submit" value="登录"/><input type="reset" value="重置" /></td></tr>
</table>
</form>
  </body>
</html>------------------------------------
loginAction.java
----------------------------------------------
package org.action;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.db.DBConn;
public class LoginAction{
private String username;
private String password;
private String message;
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;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
} public String loginAdmin(){ try{
Connection conn=DBConn.getConn();
String sql=("select * from [login] where username=? and password=?");
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
              return "success";
}
else{
this.setMessage("用户名或密码错误");
return "success";
}
}catch(Exception e){
e.printStackTrace();
return null;
}
finally{
  DBConn.CloseConn();
}
 }
}
---------------------------------------
数据库连接Action
--------------------------------
package org.db;
import java.sql.*;
public class DBConn {
public static Connection conn;
//连接数据库
public static Connection getConn(){
try {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/M?user=sa&password=sa";
conn = DriverManager.getConnection(url);
return conn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//关闭连接
public static void  CloseConn(){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
--------------------------------------------------------------
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="login" class="org.action.LoginAction">
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
--------------------------------------------------
welcome.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>欢迎界面</title>
  </head>
  <body bgcolor=#F5FFE1> 
欢迎!${username} 
  </body>
</html>
----------------------------------
错误提示
 
type: Exception reportdescription" The server encountered an internal error () that prevented it from fulfilling this request.
exception :
javax.servlet.ServletException: java.lang.NoSuchMethodException: org.action.LoginAction.execute()
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
严重: Servlet.service() for servlet default threw exception
java.lang.NoSuchMethodException: org.action.LoginAction.execute()
at java.lang.Class.getMethod(Unknown Source)

解决方案 »

  1.   

      struts2 在配置文件中如果没有配置 method 则默认的方法为 execute() ,而你的 Action 中的方法为  loginAdmin() 所以提示你 没有找到 execute() <action name="login" class="org.action.LoginAction" method="loginAdmin">
                <result name="success">/welcome.jsp</result>
            </action>
      

  2.   


    String sql=("select * from [login] where username=? and password=?");
    PreparedStatement pstmt = conn.prepareStatement(sql);好像你都没有将 username 和 password 传递到 sql 里面 
    PreparedStatement pstmt = conn.prepareStatement(sql); 这句后面加上: pstmt.setString(1,this.getUsername());
    pstmt.setString(2,this.getPassword());
      

  3.   

    javax.servlet.ServletException: java.lang.NoSuchMethodException: org.action.LoginAction.execute()strut2中配置文件里没有配置method方法,会自动寻找相应class的execute方法,方法没有找到,所以报了上面的错误。
    解决方法
    配置<action name="login" class="org.action.LoginAction">
    的method属性,或者在LoginAction中定义execute方法,实现你要做的东西