来自 前端技术 2019-09-04 19:43 的文章
当前位置: 六合联盟网 > 前端技术 > 正文

报到验证

Struts 2+Jquery+JSON(登陆验证)  

Struts2 整合jQuery实现Ajax功能(2)

1.1.1 Action利用struts2-json-plugin-X.X.X.jar响应Json格式音讯:

  1. function removerecordbyid(recordid){

  2. $("#showallrecord table tr").each(

  3. function(){

  4. var seq=parseInt($( this ).children( "td" ).html());

  5. var thisrecord = this ;

  6. if(seq==recordid)

  7. if(confirm( "您确认推行删除操作么?")){

  8. $.ajax({

  9. type: "POST",

  10. url:"removeRecordById.action",

  11. dataType:"json",

  12. data:{"msg.id":recordid},

  13. success:function(json){

  14. if(json.status==4){

  15. alert("删除战败,唯有付出留言的ip技术去除" );

  16. }else{

  17. $(thisrecord).remove();

  18. // alert("删除成功");

  19. }

  20. },

  21. error:function(){

  22. alert("del error");

  23. }

  24. });

  25. }

  26. });

  27. }

Action代码(做了简化)

  1. public class CrudMsgAction extends ActionSupport{

  2. private Record msg;

  3. private int index;

  4. private RecordService recordService;

  5. private List records;

  6. private int status = 0 ;

  7. private int page = 0 ;

8.

  1. @JSON (serialize= false)

  2. public RecordService getRecordService() {

  3. return recordService;

  4. }

13.

  1. /**

  2. * 再次来到全数记录的JSON数据

  3. * @return list . All of the record.

  4. * @throws Exception

  5. */

  6. public String listAllRecord() throws Exception{

  7. List list = recordService.listAllRecord();

  8. records = list;

  9. return SUCCESS;

  10. }

24.

  1. public String listAllRecordByPage() throws Exception{

  2. List list = recordService.listAllRecord(page);

  3. records = list;

  4. return SUCCESS;

  5. }

30.

  1. /**

  2. * 插入记录

  3. * @return update the view with AJAX when struts2 action return

  4. * @throws Exception

  5. */

  6. public String listRecordByIndex() throws Exception{

  7. List list = recordService.listAllRecord();

  8. this.msg = list.get( this .getIndex());

39.

  1. return SUCCESS;

  2. }

  3. /**

  4. * 删除对应id记录

  5. * @return field status. in order to update view with AJAX

  6. * @throws Exception

  7. */

  8. public String removeRecordById() throws Exception{

  9. String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();

  10. Record r = recordService.listRecordById(msg.getId());

  11. if(clientIpAddr.equals(r.getIpaddr())){

  12. recordService.removeRecordById(msg.getId());

  13. return SUCCESS;

  14. }

  15. status = 4;

  16. return SUCCESS;

  17. }

57.

  1. /** 得到分页数 */

  2. public String getPageSize() throws Exception{

  3. page = recordService.getPage();

  4. return SUCCESS;

  5. }

  6. }

地点代码中,使用了 @JSON(serialize=false),
除却,@JSON还支持如下多少个域:
name:钦点Action属性被体系化成JSON对象的属性名。
serialize:设置是还是不是种类化该属性
deserialize:设置是不是反类别化该属性。
format:设置用于格式化输出、剖判日期表单域的格式。举例"yyyy-MM-dd'T'HH:mm:ss"

  1. < package name = "json" extends = "json-default" >

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

布局该Action与安排普通Action存在小小的区分。

包承袭了json-default包,而不再接续暗中同意的default包,那是因为唯有在该包下才有json类型的Result。
Result能够接纳

page,index排除Action 中这几个都不回去的属性.

大家假设输出person对象的name属性值,配置如下

1.

2.

person.name

3.

excludeNullProperties参数:表示是不是去掉空值, 暗中同意值是false

4.

5.

true

6.

ignoreHierarchy参数:表示是不是忽略等第,也正是承袭关系,举个例子:TestAction承继于BaseAction,那么TestAction中回到的json字符串默许是不会蕴藏父类BaseAction的属性值,ignoreHierarchy值默以为true

7.

8.

false

9.

includeProperties参数:输出结果中需求包罗的属性值,这上大夫则表明式和属性名相称,能够用“,”分割填充多少个正则表明式。 如:输出person的具备属性

10.

11.

person.*, person/.name

12.

例如:

"yushou_hetong" extends="json-default"namespace="/pages/hetong">

"hetongAdd"class="hetongAddAction">

"list">/pages/hetong/qylist.jsp

"add">/pages/hetong/add.html

"Query">/pages/hetong/query.html

"xiangmu">/pages/hetong/add/xiangmu.jsp

"loupan">/pages/hetong/add/loupan.jsp

"house">/pages/hetong/add/house.jsp

"houseList">/pages/hetong/add/houseList.jsp

"fukuan">/pages/hetong/add/fukuan.jsp

"success" type="json" >

"ignoreHierarchy">false

"includeProperties">errmsg

2010-08-02 16:47:39|  分类: Java Web |字号 订阅

二级联合浮动标签

在struts2 标签s:doubleselect二级联合浮动标签的底子上贯彻事件:第二级onchange时调用struts2 action,在action中查询八个称号,然后重回回来,此消息映将来页面上(那只是给客商三个提醒新闻,不影响表单能或不能够提交)

亟需加事件的二级联合浮动jsp代码

1.

class="alignLeft" width="22%"> 所属事务/项目名称:

2.

class="alignLeft" width="20%">

3.

  1. listValue="operationName" doubleList="operationSubProductList"

  2. doubleListKey="id" doubleListValue="prudName" doubleName="changeApplyFormBO.productId"

  3. headerKey="" headerValue="--- Please Select ---" />

8.

咱俩须要在“项目名称”被改成的轩然大波下调用函数,在扭转的静态页面中查得它的id是cbApplySubmit_changeApplyFormBO_productId

证实一下,这里生成的id有有些准则,貌似。cbApplySubmit是本页面form表单的action,而changeApplyFormBO.productId是“项目名称”的name

上面给出定制下拉菜单事件的js

  1. <script>

2.

  1. $(function(){

  2. var obj=document.getElementById("cbApplySubmit_changeApplyFormBO_productId");

  3. obj.onchange=function(){

  4. var prodId=obj.value;

  5. var url="${contextPath}/assets/businessChange/ajaxGetCompany.do";

  6. var jsonProd={productId:prodId}; //JSON对象

  7. var prodStr=JSON.stringify(jsonProd); //将JSON对象转变成JSON格式的字符串

  8. $.post(url,{json:prodStr},callback,"json");

  9. }

  10. function callback(json){

  11. $("#company").html(json.msg);

  12. }

  13. });

16.

  1. </script>

此间,不管是从浏览器端(JS,Ajax,Jquery等)发送给服务器端,还是从劳动器端(Struts的Action,Servlet等)发送回客商端,发送的都以JSON格式的字符串

解说如下:

  1. var jsonProd={productId:prodId};

那句是创建JSON对象,这里很简短,key是productId,value是页面接纳的项目名称的id

  1. //将JSON对象调换成JSON格式的字符串

  2. var prodStr=JSON.stringify(jsonProd);

经过JavaScript内置对象JSON的stringify方法,将JSON对象转变到字符串。因为,我们传递给劳务器端的只要JSON格式的字符串。

  1. $.post(url,{json:prodStr},callback,"json");

这一句,jquery用POST方法向服务器端发送数据,url是大家要调用的action全路线,而{json:prodStr}是我们要发送的数量(data),{json:prodStr},其实也是一个JSON对象,Key:value的款型,注意,大家把prodStr这几个json串发过去,在Action这里接到时,要吸收“json”那个变量,那个变量的值正是大家发送的prodStr字符串。

回调函数(callback)是指服务器端成功再次来到时,在JS端试行的函数。最终多个参数“json”是回到数据类型的一种,别的,还恐怕有”text”、“xml”等

function callback(json){

  1. $("#company").html(json.msg);

  2. }

  3. });

company是span的id,请看最上边二级联动标签处。那几个函数用来呈现action中创设的json对象的value值

struts2 action类

  1. import org.json.JSONObject;

2.

  1. public class CBApplyAction extends ActionSupport {

  2. private IProductMng productMng;

  3. private String json;

  4. /**

  5. * 通过增选的项目名称,给出提醒职业部名称的提醒新闻

  6. *

  7. * @return

  8. * @throws Exception

  9. */

  10. public void ajaxGetCompany() throws Exception {

  11. JSONObject jsonObj = new JSONObject(json); // 将JSON格式的字符串构形成JSON对象

14.

  1. String productId = jsonObj.getString("productId"); // 获取JSON对象中的productId属性的值

16.

  1. ProductBO prod = productMng.loadProduct(Integer.parseInt(productId));

  2. Integer companyId = prod.getCompanyId();

  3. CompanyBO comp = productMng.loadCompany(companyId);

  4. String companyName = "工作部为:" + comp.getName();

  5. json = "{msg:'" + companyName + "'}"; //构造JSON格式的字符串

  6. sendMsg(json); //发送JSON格式的字符串回JS端

  7. }

24.

  1. public void sendMsg(String content) throws IOException{

  2. HttpServletResponse response = ServletActionContext.getResponse();

  3. response.setCharacterEncoding("UTF-8");

  4. response.getWriter().write(content);

  5. }

30.

  1. public String getJson() {

  2. return json;

  3. }

34.

  1. public void setJson(String json) {

  2. this.json = json;

  3. }

38.

  1. public void setProductMng(IProductMng productMng) {

  2. this.productMng = productMng;

  3. }

  4. }

JSONObject是我从json的网站 ajaxGetCompany方法未有像struts2 别的方法那样有重返值String,这里设的是void,因大家无需别的跳转.

这边有个须求专一的,json= "{msg:'" + companyName + "'}"; companyName外面应该有引号括起来

struts2 配置文件

  1. class="CBApplyAction"

  2. method="ajaxGetCompany">

3.

没有result

整合jQuery实现Ajax功能(2) 1.1.1 Action利用struts2-json-plugin-X.X.X.jar响应Json式信息: 1. function removerecordbyid(recordid){ 2. $("#showallrecord table tr"...

 

网络有广大有关Struts2与JSON的篇章,谷歌(Google)加百度,查阅了众多,有五光十色的做法。个中,超越58%的文章都说要增添二个叫jsonplugin的插件,在谷歌(Google)Code能够下载。之前本人有做过测量试验,也是用它,但真正麻烦,要让Struts2的package承袭二个叫“json-default”的父package。网络的文章,超过一半都是说从Struts的Action如何把JSON数据发送回浏览器端(Ajax),而小编想要三个跟它们相反的进度(即从Ajax端发送数据到服务器端的Action并深入分析出来),却找不到适当的答案。搜求了多少个夜间,未果。前天终于让自个儿找到了思路。

 

里面,不管是从浏览器端(JS,Ajax,Jquery等)发送给服务器端,依旧从服务器端(Struts的Action,Servlet等)发送回客商端,都要辨别一点:发送的都应当是JSON格式的字符串。www.2cto.com

 

下面,大家先来重写登陆模块中的loginform.jsp文件,原本的代码,请看Struts 2.1.6 精简实例类别教程(2):客商登陆模块的落成,以后涂改的代码如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>登录页</title>

<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript">

    $(function(){

        $("#submit").click(function(){

            var loginName1 = $("input[name='loginName']").val();    //获取账号

            var password1 = $("input[name='password']").val();        //获取密码

 

            var jsonUser = {loginName:loginName1, password:password1};    //JSON对象

           

            //注意:jsonUser.toString()这种措施不当,javaScript中的toString是用以布尔型变量的,而选用以下方法

            var strUser = JSON.stringify(jsonUser);    //将JSON对象调换成JSON格式的字符串,

           

            $.post("user/login.action", {json: strUser}, callback, "json");

        });

 

        function callback(json){

            alert(json.msg);    //呈现反馈音讯

            if(json.suc == 1){    //假使重回"登入成功"

                window.location.href = "admin/index.action";    //跳转到后台主页

            }

        }

       

    });

</script>

</head>

<body>

 

<form action="user/login.action" method="post">

    账号<input type="text" name="loginName"/><br/>

    密码<input type="password" name="password"><br/>

    <input type="button" id="submit" value="登录"/>

</form>

 

</body>

</html>

 

根本的两句是:

 

var jsonUser = {loginName:loginName1, password:password1};    (1)

var strUser = JSON.stringify(jsonUser);                                         (2)

第(1)句是构建JSON对象,关于JSON对象的格式,建议我们到

 

第(2)句,非常重大,通过JavaScript内置对象JSON的stringify方法,将JSON对象调换来字符串。因为,大家传递给服务器端的若是JSON格式的字符串。

 

$.post("login!valid.action", {json: strUser}, callback, "json");

这一句,Jquery用POST方法向劳动器端发送数据,login!valid.action是大家要发送到的指标U奥迪Q3I,也即高达loginAction的valid方法。而{…}是我们要发送的数量(data),{json:strUser},其实也是三个JSON对象,Key:value的情势,我们小心,大家把strUser那些json串发过去,在Action那里收受时,要接过“json”这么些变量,那一个变量的值正是我们发送的strUser字符串。

 

回调函数(callback)是指服务器端成功发回时,在JS端执行的函数。最终叁个参数“json”是重返数据类型的一种,另外,还会有”text”、“xml”等。而function callback函数体的剧情,大家看完LoginAction类后,自然会知晓。

 

好,Show一下改变后的LoginAction.java,代码如下:

 

package cn.simple.action;

 

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import org.json.JSONObject;

import cn.simple.pojo.User;

import com.opensymphony.xwork2.ActionSupport;

 

//@Results({

//    @Result(name="success", location="admin/index.action", type="redirect"),

//    @Result(name="input", location="loginform.jsp", type="dispatcher")

//})

public class LoginAction extends ActionSupport {

 

    private String json;    //JSON字符串,JS与Action传递数据的载体

    public String getJson() {

        return json;

    }

    public void setJson(String json) {

        this.json = json;

    }

 

    /** *//**

     * 登陆验证

     * @throws Exception

     */

    public void valid() throws Exception {

        JSONObject jsonObj = new JSONObject(json);    //将JSON格式的字符串构变成JSON对象

        String loginName = jsonObj.getString("loginName"); //获取JSON对象中的loginName属性的值

        String password = jsonObj.getString("password");    //获取JSON对象中的password属性的值

       

        if(loginName=="yutong"){

            //此时的JSON对象,有四个性子suc和msg,在那之中suc表示是否登陆成功的场所

            json = "{suc:0, msg:'客商名不设有'}";    //构造JSON格式的字符串

        } else if( ! password.equals("123")){

            json = "{suc:0, msg:'密码不精确!'}";

        } else {

            json = "{suc:1, msg:'登陆成功!'}";

        }

        sendMsg(json);    //发送JSON格式的字符串回JS端

    }

   

    /** *//**

     * 向顾客端的JS发送字符串

     * @param content 发送的剧情

     * @throws IOException

     */

    public void sendMsg(String content) throws IOException{

        HttpServletResponse response = ServletActionContext.getResponse();

        response.setCharacterEncoding("UTF-8");

        response.getWriter().write(content);

    }

   

}

 

 

我们说过了,JS与Action相互传递的是JSON格式的字符串,故在LoginAction里,大家定义了private String json这几个成员属性及其getter和setter方法。

 

 

要么,打成jar包,放到项目lib目录下。大家就能够运用JSON类库提供给我们的法门了。

 

网络有另一个JSON的类库:json-lib,大家也可下载使用一下,然而,它要推荐多少个别的的jar包,详细请见

 

sendMsg方法,是从Struts的Action中调用回原生Servlet的response来向浏览器端发送数据。

 

还应该有少数,大家应该小心到,大家在LoginAction中写的valid方法再次回到类型是void型的,跟大家从前做的归来“success”、”input”之类的String类型分化。当大家透过 “!valid”来方法它时,它不作跳转,而是像大家一贯Servlet中这种直接展示HTML类似。那一点达到了Ajax与Struts的中标交互。而互连网海人民广播广播台湾大学写jsonplugin插件使用的篇章,所调用的形式都以重临String类型,然后,再来个<result type=”json”>,那样以为挺麻烦的,比不上直接让Ajax发来的央浼与void类型的办法交互,不直接直爽?

 

好,让我们运营一下,看看效果呢:

图片 1

 

图片 2

 

 

世家看看fireFox的debug的调控桃园显得的:

图片 3

 

 

好,大家来输入四个不错的账号和密码,如下:

 

图片 4

 

点显著后,网页就跳到了后台主页。

 

这样,Ajax(Jquery)与Struts2.1.6的交互,通过JSON格式的字符串传递数据,这一实施就做到了。有点亟需证飞鹤下:本例中的JSON对象都以争持相比轻便,还也会有一部分错综相连的JSON对象,如{company:{building:”五角大楼”,employees:[{name:”tom”,age:21},{name:”marry”,age:18} ] } }。至于这一个,该怎么处理吧?其实,管理办法也如出一辙的。只是在Action中调用JSON类库的有的对象和方法,就能够很好地管理。

 

有关Struts2,JSON,Jquery的话题,我们会在Struts2.1.6简练实例连串教程之外,继续探讨。

 

2+Jquery+JSON(登陆验证) 贰零壹零-08-02 16:47:39| 分类: Java Web |字号 订阅 网络有过多有关Struts2与JSON的稿子,Google加百度,查阅了过多,有各...

本文由六合联盟网发布于前端技术,转载请注明出处:报到验证

关键词: