SMBMS项目(三)

发现这个界面所有的它的左侧和上侧都是一样的,基本上所有的其他jsp都是直接include标签引入头和尾部两部分呢,这好像是是一种很不错的设计界面的方式,可以学习一下。

下面我们继续做下一个功能,修改密码的功能
我们来到这个界面pwdmodify.jsp
看它的最后一行有一个什么:
<script type=“text/javascript” src="${pageContext.request.contextPath }/js/pwdmodify.js"></script>
再提醒一下,引入js必须是这样,不能使用自闭和标签
所以我们看到这个js界面去。

首先我们使用从底层向上层写,先写dao层修改密码的部分,然后service层,最后才是servlet。
由于验证原始密码使用到了ajax,所以先用ajax验证原始密码是否正确。这个异步请求的servlet中的方法不能只返回前端数据,后端也要保存.
我们的数据交换使用json,使用阿里的Fastjson转换工具
网址:https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.79
在这里插入图片描述

这个地方一个问题耽误了很久,就是一个Ajax的问题,一开始自己返回的时候这样写:
 writer.write("{'result':'true'}");
 然后Ajax请求一直失败,没办法使用了Fastjson工具类,发现它的字符串是这样的:
 {"result":"true"},然后改了代码:
 writer.write("{\"result\":\"error\"}");就可以了,也可直接使用工具类进行转换
Ajax请求会不会走过滤器?
会的。

下面做用户管理的页面,又有一个问题耽误了很久

request.getRequestDispatcher("/jsp/userlist.jsp").forward(request,response);
  response.sendRedirect(path+"/jsp/userlist.jsp");
  这个路径我上面加上去path就会出错,应该是请求转发就会带上项目名了吧。重定向不会。

查询用户,同时进条件查询,发现前端还有年龄,写了一个由出生日期计算年龄的工具类
同时因为条件查询,要注意sql语句的编写。

package com.dongmu.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class GetAge {
    public static int getAge(String birthday){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        int age = 0;
        Calendar birth = Calendar.getInstance();
        Calendar now = Calendar.getInstance();
        now.setTime(new Date());
        try {
            birth.setTime(sdf.parse(birthday));
            if (birth.after(now)) {
                return 0;
            }else {
                age = now.get(Calendar.YEAR)-birth.get(Calendar.YEAR);
                if (now.get(Calendar.MONTH)<birth.get(Calendar.MONTH)){
                    age--;
                }else if (now.get(Calendar.MONTH)==birth.get(Calendar.MONTH)){
                    if (now.get(Calendar.DAY_OF_MONTH)<birth.get(Calendar.DAY_OF_MONTH)){
                        age--;
                    }
                }
            }
            return age;
        } catch (ParseException e) {
            e.printStackTrace();
        }

//        calendar.

        return 0;
    }


}

下面继续做ajax响应下一页等功能,这个要考虑在每种情况下的下一页,不能因为按下一页导致全部查询。只有这里有点麻烦。

后面就是基本相同的内容。理解三层架构即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海冥鱼未眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值