1.在tomcat的webapp中创建一个WEB工程myapp,具体的文件及路径如下所示:

①/webapp/myapp/login.jsp

②/webapp/myapp/welcom.jsp

③/webapp/myapp/error.jsp

④/webapp/myapp/WEB-INF/web.xml

⑤/webapp/myapp/WEB-INF/classes

⑥/webapp/myapp/WEB-INF/classes/struts.xml

⑦/webapp/myapp/WEB-INF/classes/test/LoginAction.class

⑧/webapp/myapp/WEB-INF/lib

 

2.在lib中添加如下jar文件:commons-fileupload-1.3.1、commons-io-2.2、commons-lang3-3.2、commons-logging-1.1.3、freemarker-2.3.19、javassist-3.11.0.GA、ognl-3.0.6、struts2-core-2.3.20、xwork-core-2.3.20(具体版本根据自己使用的Struts2的版本做调整)

 

3.源代码

#login.jsp

---------------------------------------------------------------------------------

<%@page language="java" contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>
登陆页面</title>
</head>
<body>
<form action="Login.action" method="post">

<tablealign="center">
  <caption><h3>
登陆页面</h3></caption>
  <tr>
   <td>username<input type="text"name="username"/></td>
  </tr>
  <tr>
   <td>password<input type="text"name="password"/></td>
  </tr>
  <tr>
   <td colspan="2"><inputtype="submit" value="submit"/><inputtype="reset" value="reset" /></td>
  </tr>
 </table>
</form>
</body>
</html>

 

#welcome.jsp

---------------------------------------------------------------------------------------

<%@page language="java" contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>
成功页面</title>
</head>
<body>
您已经登陆!
</body>
</html>

 

#error.jsp

--------------------------------------------------------------------------------

<%@page language="java" contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>
失败页面</title>
</head>
<body>
登陆失败!
</body>
</html>

 

#LoginAction.java

-----------------------------------------------------------------------

packagetest;
public class LoginAction
{
 private String username;
 private String password;
 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 execute() throws Exception
 {
  if (getUsername().equals("scott") &&getPassword().equals("tiger") )
  {
   return "success";
  }
  else
  {
   return "error";
  }
 }
}

 

4.web.xml配置

--------------------------------------------------------------------------------------

<?xmlversion="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="
http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="
http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
       <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

   <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

5.Struts2.xml配置

--------------------------------------------------------------------------------------

<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration2.3//EN"
 "
http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constantname="struts.enable.DynamicMethodInvocation" value="false"/>
    <constant name="struts.devMode"value="true" />
    <package name="default" namespace="/"extends="struts-default">
  <action name="Login"class="test.LoginAction" method="execute">
            <resultname="success">/welcome.jsp</result>
            <resultname="error">/error.jsp</result>
        </action>
    </package>
</struts>

 

6.常见问题

1)输入http://localhost:8080/myapp/login.jsp提示:HTTPStatus 404 - /myapp/login.jsp

主要原因可能有:①lib中的jar文件不够

②struts.xml中的package与action配置有误

2)login.jsp页面点击submit提交后提示空指针错误

主要原因可能有:①LoginAction没有包名,直接存放在了classes的根目录下