Struts1.x 基本原理及注册模块的实现

1、编写JavaBean:User,必须继承于ActionForm类

 1 package myuser;
 2 
 3 import org.apache.struts.action.ActionForm;
 4 
 5 public class User extends ActionForm{
 6     
 7     //不加这个 eclipse 有警告
 8     private static final long serialVersionUID = 5599822869891501922L;
 9 
10     private Integer id;
11     
12     private String userName;
13     
14     private String pwd;
15 
16     public Integer getId() {
17         return id;
18     }
19 
20     public void setId(Integer id) {
21         this.id = id;
22     }
23 
24     public String getUserName() {
25         return userName;
26     }
27 
28     public void setUserName(String userName) {
29         this.userName = userName;
30     }
31 
32     public String getPwd() {
33         return pwd;
34     }
35 
36     public void setPwd(String pwd) {
37         this.pwd = pwd;
38     }
39 }


2、在struts-config.xml中注册User的对象user

    FormBean的概念,顾名思义,Form中的bean,表单中的数据,在Struts1.x由专门的ActionForm类负责接收,配置在 struts-config.xml中

1      <form-beans>
2          <form-bean name="user" type="myuser.User"/>
3      </form-beans>

  一些反复编写的,没有任何技术含量的代码,都有框架来实现,比如:
     User user = new User();
     getParameter 等。
     FormBean的作用,为操作(action)提供数据。
3、编写UserDao类的方法 addUser(User user)

 1     public void addUser(User user){
 2         String sql = "insert into users(userName,pwd) values(?,?)";
 3         //获取连接
 4         Connection conn = DBLib.getConn();
 5         //创建数据库操作对象
 6         PreparedStatement pstmt;
 7         try {
 8             pstmt = conn.prepareStatement(sql);
 9             pstmt.setString(1, user.getUserName());
10             pstmt.setString(2, user.getPwd());
11             //执行数据库操作
12             pstmt.execute();
13             pstmt.close();
14         } catch (SQLException e) {
15             e.printStackTrace();
16         } finally{
17             try {
18                 //关闭数据库连接
19                 conn.close();
20             } catch (SQLException e) {
21                 e.printStackTrace();
22             }
23         }
24         
25     }


4、编写AddUserAction,调用UserDAO类中的addUser方法,添加用户,此类必须继承于Action

 1 package action;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 
 6 import org.apache.struts.action.Action;
 7 import org.apache.struts.action.ActionForm;
 8 import org.apache.struts.action.ActionForward;
 9 import org.apache.struts.action.ActionMapping;
10 
11 import dao.UserDAO;
12 import myuser.User;
13 
14 public class AddUserAction extends Action {
15 
16     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
17             HttpServletResponse response) throws Exception {
18         User user = (User)form;
19         UserDAO dao = new UserDAO();
20         dao.addUser(user);
21         return mapping.findForward("list");//跳转到userlist.jsp页面
22     }
23     
24 }


5、配置AddUserAction, path,name,scope,forward,添加成功后转向userlist.jsp

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3  <!DOCTYPE struts-config PUBLIC
 4      "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
 5      "http://struts.apache.org/dtds/struts-config_1_3.dtd">
 6  <struts-config>
 7      <form-beans>
 8          <form-bean name="user" type="myuser.User"/>
 9      </form-beans>
10      
11      <action-mappings>
12          <action path="/addUser" type="action.AddUserAction" name="user">
13              <forward name="list" path="/userlist.jsp" />
14          </action>
15      </action-mappings>
16  </struts-config>

配置说明:

form-beans:用来放置多个formbean

from-bean:单个的formbean

       | name:from-bean的名字,用于下面action标签的引用

       | type:所对应的类,该类一定要继承 ActionForm

action-mappings:用来放置多个action

action:单个的action

       | path:通过*.do(一般是,这要看web.xml url-pattern的配置)过滤后的路径名称,必须加"/"

       | type:所对应的类,该类一定要继承 Action(或者其子类,后面会有例子)

       | name:form-beans中的某个form-bean

       | scope:该formbean的有效范围,两个值:request、session

       | attribute:formbean在该有效范围中的名字,如果没有设置该属性默认就是name的值,一般不用设置该属性

              forward:action 处理完成之后跳转到哪个页面

                     | name:给action中的 mapping.findForward(name) 用的

                     | path:页面路径,以前一定要加"/"

5、JSP页面代码

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset==UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 用户注册<br/>
11 
12 <form method="post" action="addUser.do">
13     <table>
14         <tr>
15             <td>用户名:</td>
16             <td><input type="text" name="userName"/></td>
17         </tr>
18         <tr>
19             <td>密码:</td>
20             <td><input type="password" name="pwd"/></td>
21         </tr>
22         <tr>
23             <td colspan="2">
24                 <input type="submit" value="提 交"/>
25             </td>
26         </tr>
27     </table>
28 </form>
29 <div id="msg"></div>
30 <br/>
31 <br/>
32 <a href="main.jsp">返回主页面</a>
33 </body>
34 </html>


代码链接:http://pan.baidu.com/s/1qY4PEOW 提取码:gy0n

posted @ 2017-03-20 14:11  流年如水烟雨随风  阅读(895)  评论(0编辑  收藏  举报