SSM+AJAX整合难点,易错点总结

25 篇文章 0 订阅
7 篇文章 0 订阅

1.静态资源访问问题

    如果想通过jsp文件跳转到某个特定的html或者jsp文件(比如网站首页仅仅是展示一些静态的宣传信息,没有涉及到后台逻辑交互),可以设置这些特定的html或jsp文件与某文件夹中,然后在spring-mvc.xml配置文件中将该文件夹设置静态访问就可以直接跳转到想要跳转的页面,如下

<!-- 静态资源访问-->
 <mvc:resources location="/normal/" mapping="/normal/**" />

(当然不闲麻烦的同学可以使用老方法跳转到controller文件中进行设置然后进行页面的跳转)

2.逆向工程相关问题

    配置generatorConfig.xml文件后,倘若Mysql中某些成员属性(类型,名称等)发生变化后,Maven构建之前,一定要将之间各实体对应的Mapper.xml文件删除,防止多次自动构建的代码产生在同一个文件中(不删除会默认在后面续加),影响后续修改。

3.实时数字验证码问题

    想要前台点击按钮进行验证码生成操作,可以通过ajax技术进行操作,如下对获取验证码按钮设置点击事件:

   function sendCode(obj){
            var phone = document.getElementById("phone");
            var value = phone.value.trim();
            if(value && value.length == 11){
                $.ajax({
                    type : "POST",
                    cache : false,
                    url : "/user/getCode",
                    data : {phone : value}
                });
				// 1分钟内禁止点击
                for (var i = 1; i <= 60; i++) {
                    // 1秒后显示
                    window.setTimeout("updateTime(" + (60 - i) + ")", i * 1000);
                }
            }else{
                alert("请输入正确的手机号码");
                phone.focus();
            }
            alert("验证码已发送,请查看!")
        }

将请求发送到后台/user/getCode action中,然后action进行生成验证码操作,同时设置属性值(生成的验证码),以便用户点击注册按钮时,下个逻辑能进行验证码判断,相关的两个action如下:

    //获取验证码
    @RequestMapping(value = "/getCode")
    public ModelAndView getCode(HttpServletRequest httpServletRequest){
            String url = httpServletRequest.getHeader("Referer");
            String tel = httpServletRequest.getParameter("phone");
            ModelAndView mod = new ModelAndView();
            System.out.println("tel:"+tel);
            //send.code(tel);
            sendMsg s = new sendMsg();
            //以下代码可以在有短信功能后进行删除
            int code2 = s.postCode();  //产生验证码
            System.out.println("验证码是-------------:"+code2);
            httpServletRequest.getSession().setAttribute("buildCode",code2);
            mod.addObject("buildCode",code2);
            mod.setViewName("index");
        return mod;
    }

       当用户点击注册按钮时,调入如下action,在这里进行 验证码的检验

   //添加用户
    @RequestMapping(value = "/addUser")
    public String addUser(HttpServletRequest httpServletRequest, @ModelAttribute("user")User user1){
        /*
         * 只是此处多了一个注解@ModelAttribute("user"),
         * 它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。
         * 我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。
         * */
        String url = httpServletRequest.getHeader("Referer");  //获取来源网页后文件信息。便于后续重定向
        User user = userService.getUserByPhone(user1.getUtelephone());
        if(user==null){
                String userInput = httpServletRequest.getParameter("inputCode");  //用户输入的
                String buildCode = httpServletRequest.getSession().getAttribute("buildCode").toString();
                System.out.println("verifyCode:"+userInput);
                System.out.println("resultCode:"+buildCode);
                if(userInput.equals(buildCode)){
                    userService.addUser(user1);
                    System.out.println("添加成功");
                }
                else{
                    System.out.println("验证码不相符:");
                }
        }
        return "redirect:"+url;
    }

4.bootstrap fileinput.css相关问题

    刚开始开发的时候,在图片添加处,一些相应的按钮图片显示不出来,最后查出的原因是之前调用的bootstrap内容不全,于是换了bootstrap相应的地址就成功了,有关文件链接如下:

	<link rel="stylesheet" href="../css/font-awesome.min.css" />
	<!-- jquery -->
	<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
	<!-- bootstrap -->
	<script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
	<link rel="stylesheet"
		  href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css" />

	<link rel="stylesheet" href="../css/bootstrap-select.css" />
	<script type="text/javascript" src="../js/bootstrap-select.js"></script>

	<link rel="stylesheet" href="../css/Releasethings.css" />
	<!-- 图片上传即使预览插件 -->
	<link rel="stylesheet" href="../css/fileinput.min.css" />
	<script type="text/javascript" src="../js/fileinput.min.js"></script>
	<script type="text/javascript" src="../js/zh.js"></script>

5.ajax传递数据从一个jsp页面调到另一个jsp页面有关问题

    开始书写的时候,直接将ajax的url直接链接到相关操作的action中,结果并不能直接通过action跳到指定的页面,因为ajax请求过去,返回给你的是一个值,不是一个页面,即使你后台返回的是一个页面ajax也当字符串返回,所以跳不了页面,你可以在ajax的回调函数中进行页面跳转的操作,试了其中一位答主的方法,果然成了,相应的文章链接点击打开链接,我做的是类似与京东,淘宝的那种筛选操作,因此定义了不少东西,相应的代码如下:

JSP代码:

<div class="container" style="background: #fff;padding: 2em;">
    <div id="ConditionRetrieval" style="margin-left: 20% ">
        <div class="row">
            <ul class="simplefilter1">
                选择发布时间:
                <li value="0"><a href="#">不限</a></li>
                <li value="1"><a href="#">一天之内</a></li>
                <li value="2"><a href="#">三天之内</a></li>
                <li value="3"><a href="#">一周之内</a></li>
                <li value="4"><a href="#">两周之内</a></li>
                <li value="5"><a href="#">一个月之内</a></li>
                <li value="6"><a href="#">一个月之上</a></li>
            </ul>
        </div>

        <div class="row">
            <ul class="simplefilter2">
                丢  失  地  点 :
                <li value="0"><a href="#">不限</a></li>
                <li value="1"><a href="#">宿舍区</a></li>
                <li value="2"><a href="#">教学楼</a></li>
                <li value="3"><a href="#">餐厅</a></li>
                <li value="4"><a href="#">操场</a></li>
                <li value="5"><a href="#">图书馆</a></li>
                <li value="6"><a href="#">校园周边</a></li>
            </ul>
        </div>

        <div class="row">
            <ul class="simplefilter3">
                物  品  类  别 :
                <li value="0"><a href="#">不限</a></li>
                <li value="1"><a href="#">手机/充电宝</a></li>
                <li value="2"><a href="#">书籍/眼睛</a></li>
                <li value="3"><a href="#">卡类</a></li>
                <li value="4"><a href="#">钥匙/U盘</a></li>
                <li value="5"><a href="#">学习用品</a></li>
                <li value="6"><a href="#">伞/衣服</a></li>
                <li value="7"><a href="#">其他</a></li>
            </ul>
        </div>
    </div>
    <!--条件筛选-->

ajax代码:

<script>
    $(function () {
        //定义3个变量用来存取状态值
        var time =0;
        var place = 0;
        var catelog = 0;
        var result = 0;
        $('.simplefilter1 li').click(function() {
            time = $(this).val();
            result = time+":"+place+":"+catelog;
            $.ajax({
                type : "get",
                cache : false,
                url : "/thing/complexValue",
                data : {ttime : time,taddress:place,cid:catelog},
                dataType:"json",
                success:function (data) {
                    var json_data = JSON.stringify(data);  //系列化对象(把数据转换成字符串类型)
                    window.location.href= "/thing/searchComplex?aa="+json_data;
                }
            });
        });
        $('.simplefilter2 li').click(function () {
            place = $(this).val();
            result = time+":"+place+":"+catelog;
            $.ajax({
                type : "get",
                cache : false,
                url : "/thing/complexValue",
                data : {ttime : time,taddress:place,cid:catelog},
                dataType:"json",
                success:function (data) {
                    var json_data = JSON.stringify(data);  //系列化对象(把数据转换成字符串类型)
                    window.location.href= "/thing/searchComplex?aa="+json_data;
                }
            });
        });
        $('.simplefilter3 li').click(function () {
            catelog = $(this).val();
            result = time+":"+place+":"+catelog;
            $.ajax({
                type : "get",
                cache : false,
                url : "/thing/complexValue",
                data : {ttime : time,taddress:place,cid:catelog},
                dataType:"json",
                success:function (data) {
                    var json_data = JSON.stringify(data);  //系列化对象(把数据转换成字符串类型)
                    window.location.href= "/thing/searchComplex?aa="+json_data;
                }
            });

        });
    })
</script>

相应的action代码(分为两部分):

        @ResponseBody
        @RequestMapping(value = "/complexValue")
        public String complexValue(String ttime,String taddress,Integer cid){
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("inputTime",ttime);
            map.put("inputPlace",taddress);
            map.put("inputCatelog",cid);
            return JSON.toJSONString(map);
        }
 @RequestMapping("/searchComplex")
    public String searchComplex(String aa,Model model, Thing thing) throws Exception{
        JSONObject jsonObject = JSON.parseObject(aa);  //解析对象
        String inputTime = jsonObject.getString("inputTime");
        String inputPlace =jsonObject.getString("inputPlace");
        int inputCatelog = jsonObject.getInteger("inputCatelog");
        Set<ThingsExtend> set = new HashSet<ThingsExtend>();
        if(inputCatelog==0&&!inputTime.equals("0")&&!inputPlace.equals("0")){
            List<Thing> Bytime = thingService.getThingsByTime(inputTime);
            List<Thing> ByPlace = thingService.getThingsByPlace(inputPlace);
            System.out.println("分类为0,其他不为0");
            for(int i=0;i<Bytime.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing time = Bytime.get(i);
                List<Image> imageTime = imageService.getImageByPrimaryKey(time.getTid());
                thingsExtend.setThing(time);
                thingsExtend.setImage(imageTime);
                set.add(thingsExtend);
            }
            for(int i=0;i<ByPlace.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing place = ByPlace.get(i);
                List<Image> imagePlace = imageService.getImageByPrimaryKey(place.getTid());
                thingsExtend.setThing(place);
                thingsExtend.setImage(imagePlace);
                set.add(thingsExtend);
            }
        }
        if(inputPlace.equals("0")&&inputCatelog!=0&&!inputTime.equals("0")){
            List<Thing> Bytime = thingService.getThingsByTime(inputTime);
            List<Thing> ByCatelog = thingService.getThingsByCatelog(inputCatelog);
            System.out.println("地点为0,其他不为0");
            for(int i=0;i<Bytime.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing time = Bytime.get(i);
                List<Image> imageTime = imageService.getImageByPrimaryKey(time.getTid());
                thingsExtend.setThing(time);
                thingsExtend.setImage(imageTime);
                set.add(thingsExtend);
            }
            for(int i=0;i<ByCatelog.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing catelog = ByCatelog.get(i);
                List<Image> imageCatelog = imageService.getImageByPrimaryKey(catelog.getTid());
                thingsExtend.setThing(catelog);
                thingsExtend.setImage(imageCatelog);
                set.add(thingsExtend);
            }
        }
     if(inputTime.equals("0")&&inputCatelog!=0&&!inputPlace.equals("0")){
         List<Thing> ByPlace = thingService.getThingsByPlace(inputPlace);
         List<Thing> ByCatelog = thingService.getThingsByCatelog(inputCatelog);
         System.out.println("时间为0,其他不为0");
            for(int i=0;i<ByPlace.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing place = ByPlace.get(i);
                List<Image> imagePlace = imageService.getImageByPrimaryKey(place.getTid());
                thingsExtend.setThing(place);
                thingsExtend.setImage(imagePlace);
                set.add(thingsExtend);
            }
            for(int i=0;i<ByCatelog.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing catelog = ByCatelog.get(i);
                List<Image> imageCatelog = imageService.getImageByPrimaryKey(catelog.getTid());
                thingsExtend.setThing(catelog);
                thingsExtend.setImage(imageCatelog);
                set.add(thingsExtend);
            }
        }

        if(inputCatelog==0&&inputPlace.equals("0")){
            List<Thing> Bytime = thingService.getThingsByTime(inputTime);
            System.out.println("分类,地点为0");
            for(int i=0;i<Bytime.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing time = Bytime.get(i);
                List<Image> imageTime = imageService.getImageByPrimaryKey(time.getTid());
                thingsExtend.setThing(time);
                thingsExtend.setImage(imageTime);
                set.add(thingsExtend);
            }
        }

        if(inputTime.equals("0")&&inputCatelog==0){
            List<Thing> ByPlace = thingService.getThingsByPlace(inputPlace);
            System.out.println("时间,分类为0");
            for(int i=0;i<ByPlace.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing place = ByPlace.get(i);
                List<Image> imageTime = imageService.getImageByPrimaryKey(place.getTid());
                thingsExtend.setThing(place);
                thingsExtend.setImage(imageTime);
                set.add(thingsExtend);
            }
        }

         if(inputCatelog==0&&inputTime.equals("0")){
             List<Thing> ByPlace = thingService.getThingsByPlace(inputPlace);
            for(int i=0;i<ByPlace.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing place = ByPlace.get(i);
                List<Image> imagePlace = imageService.getImageByPrimaryKey(place.getTid());
                thingsExtend.setThing(place);
                thingsExtend.setImage(imagePlace);
                set.add(thingsExtend);
            }
        }
        if(inputTime.equals("0")&&inputPlace.equals("0")){
            List<Thing> ByCatelog = thingService.getThingsByCatelog(inputCatelog);
            System.out.println("时间,地点为0");
            for(int i=0;i<ByCatelog.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing catelog = ByCatelog.get(i);
                List<Image> imageCatelog = imageService.getImageByPrimaryKey(catelog.getTid());
                thingsExtend.setThing(catelog);
                thingsExtend.setImage(imageCatelog);
                set.add(thingsExtend);
            }
        }
        if(inputCatelog==0&&inputPlace.equals("0")&&inputTime.equals("0")) {
            System.out.println("都为0");
            List<ThingsExtend> thingsAndImage = new ArrayList<ThingsExtend>();
            List<Thing> thingsList = thingService.selectAllThings();
            for (int i = 0; i < thingsList.size(); i++) {
                //将用户信息和image信息封装到GoodsExtend类中,传给前台
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing thingss = thingsList.get(i);   //获取商品
                List<Image> image = imageService.getImageByPrimaryKey(thingss.getTid());
                thingsExtend.setImage(image);
                thingsExtend.setThing(thingss);
                thingsAndImage.add(i, thingsExtend);
                set.add(thingsExtend);
            }
        }

        if(inputCatelog!=0&&!inputPlace.equals("0")&&!inputTime.equals("0")){
            List<Thing> Bytime = thingService.getThingsByTime(inputTime);
            List<Thing> ByPlace = thingService.getThingsByPlace(inputPlace);
            List<Thing> ByCatelog = thingService.getThingsByCatelog(inputCatelog);
            System.out.println("都不为0");
            for(int i=0;i<Bytime.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing time = Bytime.get(i);
                List<Image> imageTime = imageService.getImageByPrimaryKey(time.getTid());
                thingsExtend.setThing(time);
                thingsExtend.setImage(imageTime);
                set.add(thingsExtend);
            }
            for(int i=0;i<ByPlace.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing place = ByPlace.get(i);
                List<Image> imagePlace = imageService.getImageByPrimaryKey(place.getTid());
                thingsExtend.setThing(place);
                thingsExtend.setImage(imagePlace);
                set.add(thingsExtend);
            }
            for(int i=0;i<ByCatelog.size();i++){
                ThingsExtend thingsExtend = new ThingsExtend();
                Thing catelog = ByCatelog.get(i);
                List<Image> imageCatelog = imageService.getImageByPrimaryKey(catelog.getTid());
                thingsExtend.setThing(catelog);
                thingsExtend.setImage(imageCatelog);
                set.add(thingsExtend);
            }
        }
        model.addAttribute("thingSet",set);
        model.addAttribute("catelogId",inputCatelog);
        model.addAttribute("placeId",inputPlace);
        model.addAttribute("timeId",inputTime);
        return "thing/searchByDetail";
    }

上面第二部分代码,是实在没办法才这样写的,尴尬因为我不太会写复杂的sql查询语句,而且这样虽然书写代码很多,但是逻辑比较清楚,如果有朋友这块有更好的方法希望可以告诉我一下!谢谢你。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值