Thứ Tư, 5 tháng 6, 2013

Action, ActionForm trong struts


Trên form feedback khi nhập thông tin vào form sau đó submit tất cả dữ liệu trên form sẽ được hiển thị qua trang khác.
- Trang index.jsp


Trang kết quả: feekback.jsp



  1. Trang index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <html:form action="feakback.do">
    <table>
    <tr align="center" style="height: 40px;font-size: 25px;font-weight: bold"><td colspan=2">FeekBack</td></tr>
      <tr>
        <td>Name:</td>
        <td><html:text property="name" name="feakBackActionForm"/></td>
      </tr>
      <tr>
        <td>Sex:</td>
        <td>
            <html:radio property="sex" value="F" name="feakBackActionForm">Female</html:radio>
            <html:radio property="sex" value="M" name="feakBackActionForm">Male</html:radio>
        </td>
      </tr>
      <tr>
        <td>Comments:</td>
        <td><html:textarea property="comments" name="feakBackActionForm"></html:textarea>
    </td>
      </tr>
      <tr><td colspan="2"><html:submit/></td></tr>
    </table>   
    </html:form>
    </body>
    </html>
  2. Trang feekback.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>  
        <%@taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

    <h3>FeekBack</h3>
    <body>
    Name :<bean:write name="feakBackActionForm" property="name"/><br>
    Sex :<logic:equal name="feakBackActionForm" property="sex" value="M">Male</logic:equal>
    <logic:equal value="F" name="feakBackActionForm" property="sex">Female</logic:equal>
    <br></br>
    Comments : <bean:write name="feakBackActionForm" property="comments"/>
    </body>
  3. FeakBackAction

    public class FeakBackAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
       
        FeakBackActionForm frm=(FeakBackActionForm)form;
        if(frm.getName().equals(""))
        {   
        return mapping.findForward("tb");
        }else
        return mapping.findForward("tc");
           
    }}
  4. FeakBackActionForm
    package pack;

    import org.apache.struts.action.ActionForm;

    public class FeakBackActionForm extends ActionForm {
      
      private static final long serialVersionUID = 1L;
    private String name;
    private String sex;
    private String comments;

    public FeakBackActionForm(){   
    }
    public FeakBackActionForm(String name,String sex,String comments){
        this.name=name;
        this.sex=sex;
        this.comments=comments;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getComments() {
        return comments;
    }
    public void setComments(String comments) {
        this.comments = comments;
    }

    }
  5. struts-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
    <struts-config>
        <form-beans>
            <form-bean name="feakBackActionForm" type="pack.FeakBackActionForm"></form-bean>
        </form-beans>   
        <action-mappings>
            <action path="/feakback" name="feakBackActionForm" scope="request" type="pack.FeakBackAction">
            <forward name="tc" path="/feedback.jsp"></forward>       
            </action>       
        </action-mappings>   
    </struts-config>


trong struts

In danh sách nhân viên sử dụng tag <logic:iterate> trong struts, như bên dưới


  1.  Users class
    package packClass;
    public class Products {
    private String name;
    private String age;

    public Products(String age,String name){
        this.age=age;
        this.name=name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    }

  2.  ListAction

    import packClass.Products;

    public class ListProductsAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
        List<Users> listusers=new ArrayList<Users>();
       
        listusers.add(new Users("20","Nguyen ngoc bich"));
        listusers.add(new Users("21","Tran thi thuy"));
        listusers.add(new Users("22","Le van troi"));
        listusers.add(new Users("23","Nguyen cong"));
        listusers.add(new Users("24","Luu chi binh"));
        request.setAttribute("listusers", listusers);
        return mapping.findForward("listusers");
       
    }
    }
  3. struts-config.xml

    <action path="/list" type="pack.ListAction" scope="request">
                <forward name="listusers" path="/list.jsp"></forward>
            </action>
  4. list.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
         <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
        <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <body>

    <table border="1" style="text-align: center; border: 1px solid ;">
    <tr>
    <TH>Name</TH>
    <TH>Age</TH>
    </tr>
    <logic:iterate id="listid" name="listusers">
        <tr>
            <td> <bean:write name="listid" property="name"/></td>
            <td> <bean:write name="listid" property="age"/>   </td>
        </tr>
        </logic:iterate>
    </table>
    </body>
    </html>

Login đơn giản với struts




Thư mục web gồm có các lib trên

Thực hiện login đơn giản ,
- Khi nhập username và pasword giống nhau thì đăng nhập thành công và chuyển đến trang success.jsp hiển thị username vừa nhập 
- Ngược lại trả về trang login (index.jsp) 
        
  1. Trong file struts-config.xml ta có:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
    <struts-config>
        <form-beans>
            <form-bean name="loginActionForm" type="pack.LoginActionForm"></form-bean>
        </form-beans>
       
        <action-mappings>
            <action path="/login" name="loginActionForm" scope="session" type="pack.LoginAction">
            <forward name="failed" path="/index.jsp"></forward>
            <forward name="success" path="/success.jsp"></forward>
            </action>
          
        </action-mappings>   
    </struts-config>
  2. File index.jsp
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
         <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>login</title>
    </head>
    <body>
    <center>
    <h2>Login</h2>
    <html:form action="/login">
    User name: <html:text property="usern" name="loginActionForm"/><br>
    Password : <html:text property="pass" name="loginActionForm"/><br>
    <html:submit/>
    </html:form>
    </center>
    </body>
    </html>
  3. Trang success.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

    <h2>Login successful</h2>
    Your user name is : <bean:write property="usern" name="loginActionForm" />
  4. Trong LoginActionForm
    package pack;
    import org.apache.struts.action.ActionForm;

    public class LoginActionForm extends ActionForm {
        private static final long serialVersionUID = 1L;
        private String usern;
        private String pass;

        public String getUsern() {
            return usern;
        }
        public void setUsern(String usern) {
            this.usern = usern;
        }
        public String getPass() {
            return pass;
        }
        public void setPass(String pass) {
            this.pass = pass;
        }
    }
  5. LoginAction
    package pack;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;

    public class LoginAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
       
        LoginActionForm frm=(LoginActionForm)form;
        if(frm.getUsern().equals(frm.getPass()) && !frm.getUsern().equals("") && !frm.getPass().equals("")){
        return mapping.findForward("success");
        }else{
            return mapping.findForward("failed");}
       
    }
    }