Struts2的自動封裝注入


 我們在使用struts2進行從前台傳到后台的時候(當然這里是在結合了form表單的情況下),我們通常會給input框中的name屬性賦值,然后再 后台action中提供setter/getter方法就可以完成數據的傳遞(在jquery中使用ajax的時候要記 得$("form").serialize()給表單的數據序列化)。這種方式用起來雖然很順手,但是還有一種更加方便的方法,就是使用struts2的 自動封裝,且看具體做法:
1.在后台創建一個實體類(實體類中的屬性要和前台的對應,請看下面前台.jsp的代碼):
public class User {
   
    private String id;
    private String uerName;
    private String password;
    private String idCard;
    private String address;
    private String sex;
    private String email;
    private String phone;
   //下面為各個屬性提供setter/getter方法,這里不再展示
   
}
2.創建一個action類(提供User實體類的setter/getter方法):
public class UserAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
   
   
    private User user;
   
    HttpServletRequest request;
    HttpServletResponse response;
   
    public UserAction(){
        response = ServletActionContext.getResponse();
        request = ServletActionContext.getRequest();
    }
    public void addUser(){
        System.out.println("####"+user.getUerName());//在這里可以看的到輸出結果
        try {
            response.getWriter().print("ok");
        } catch (IOException e) {
            e.printStackTrace();
        };
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}
3.創建一個addUser.jsp頁面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'addUser.jsp' starting page</title>
</head>

<body>
    <div id="addBox">
        <form id="addUser" method="POST">
            <div id="uID">
<!-- 注意在input框里面的name值為對象點屬性,這里的點屬性一定要和User實體類里面的的屬性相同 -->
                <label class="tip">用戶編號:</label><span class="field"><input name="user.id"
                    type="text"></span>
            </div>
            <div id="uName">
                <label class="tip">用戶名:</label><span class="field"><input name="user.uerName"
                    type="text"></span>
            </div>
            <div id="uPassword">
                <label class="tip">密碼:</label><span class="field"><input name="user.password"
                    type="password"></span>
            </div>
            <div id="uidCard">
                <label class="tip">身份證號:</label><span class="field"><input name="user.idCard"
                    type="text"></span>
            </div>
            <div id="uEmail">
                <label class="tip">郵箱:</label><span class="field"><input name="user.email"
                    type="text"></span>
            </div>
            <div id="uPhone">
                <label class="tip">聯系方式:</label><span class="field"><input name="user.phone"
                    type="text"></span>
            </div>
            <div id="uAddress">
                <label class="tip">住址:</label><span class="field"><input name="user.address"
                    type="text"></span>
            </div>
            <div id="uSex">
                <label class="tip">性別:</label><span class="field"> <label><input
                        name="user.sex" type="radio" value="男">男</label> <label><input
                        name="user.sex" type="radio" value="女">女</label>
                </span>
            </div>
            <div id="btn">
                <button id="addBtn">添加</button>
                <!-- <input type="button" onclick="loadInfo();" value="添加"/> -->
            </div>
        </form>
    </div>
</body>
<script type="text/javascript" src="script/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
    $("#addUser").submit(function(){
        var ajax_url = "users_addUser.action"; //表單目標
        var ajax_type = $(this).attr('method'); //提交方法
        var ajax_data = $(this).serialize();
         $.ajax({
            url:ajax_url,
            type:ajax_type,
            data:ajax_data,
            success:function(data){
                if(data=="ok"){
                    alert("添加成功");
                }else{
                    alert("添加失敗");
                }
            },
            error : function() {
                alert("網絡錯誤");
            }
        });
        return false; //阻止表單的默認提交事件
    });
</script>
</html>
注意事項:前台的input框里面的name值切記要和實體類里面對應,並且在action中為實體類提供setter/getter方法;當然使用struts2是要配置的,如想要了解可以私聊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM