美文网首页
电信计费(五)

电信计费(五)

作者: 包佳奇 | 来源:发表于2018-07-28 11:50 被阅读92次

一.验证码匹配图解分析

1.png

分析:
1.浏览器通过访问路径/toLogin.do访问服务器,服务器用MianServlet转发给login.jsp处理请求,然后向浏览器做出响应返回一个html
2.1浏览器对网页进行加载(文本转换成对象显示),浏览器向服务器发送请求,要求返回路径相对应的图片
2.2图片由静态变成动态,服务器用MianServlet中的creatImg()方法去调ImageUtil这个工具类,返回图片和验证码字符串
3.处理表单中的请求点击登录后,服务器通过MianServlet中的login()方法去验证登录,那么这里添加判断验证码判断的逻辑
第二个请求生成验证码给第三个请求使用,需要用session去存储

二.验证码业务实现

1.在MainServlet类中增加createImg()生成验证码图片的方法,里面通过ImageUtil工具类去生成图片数组,元素1位字符串存在session中,元素2位图片使用流发送到浏览器上

// 生成验证码
    protected void createImg(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        // 生成验证码及图片
        Object[] objs = ImageUtil.createImage();
        // 将验证码存入session
        HttpSession session = req.getSession();
        session.setAttribute("imgcode", objs[0]);
        // 将图片发送给浏览器
        res.setContentType("image/png");
        // 获取字节输出流,该流由服务器创建,
        // 其目标就是当前访问的那个浏览器.
        OutputStream os = res.getOutputStream();
        BufferedImage img = (BufferedImage) objs[1];
        ImageIO.write(img, "png", os);
        os.close();
    }

2.在重写的service方法里做路径判断

else if("/createImg.do".equals(path)) {
     createImg(req,res);
} 

3.在login.jsp界面中的要验证码图片进行路径的替换,并且添加点击事件

 <tr>
      <td class="login_info">验证码:</td>
      <td class="width70"><input name="" type="text" class="width70" /></td>
      <!-- <td><img src="images/valicode.jpg" alt="验证码" title="点击更换" /></td>   -->
      <td><img src="createImg.do" onclick="this.setAttribute('src','createImg.do?x='+Math.random());" alt="验证码" title="点击更换" /></td>
      <td><span class="required"></span></td>              
</tr>        
2.png

注:
这里添加单击事件去切换验证码实质上是随机动态更改图片的请求路径

4.做登录的验证,验证这个验证码和填写的是否一致,在login.jsp的验证码的逻辑处name="code",

  <td class="width70"><input name="code" type="text" class="width70" /></td>

5.在MianServlet中的login()方法去验证登录

String code = req.getParameter("code");

// 检查验证码
HttpSession session = req.getSession();
String imgcode = (String) session.getAttribute("imgcode");
if (code == null || !code.equalsIgnoreCase(imgcode)) {
    req.setAttribute("error", "验证码错误");
    req.getRequestDispatcher("WEB-INF/main/login.jsp").forward(req, res);
    return;
}

三.登录检查图解分析

3.png

分析:
1.浏览器向服务器发送请求,服务器交给LoginFilter过滤器去处理
2.当登录成功后,把adminCode存入session中,后面用过滤器判断登录成功
3.如果过滤器判断没有登录过去重定向到登录界面,如果登陆过则可以访问其他的界面

四.登录检查业务实现

1.在src/main/java->web下创建LoginFilter文件,并实现Filter接口
2.在doFilter方法中从session中获取账号,并做判断

 // 从session中获取账号
HttpSession session = req.getSession();
Object user = session.getAttribute("adminCode");
// 判断用户是否登录
if (user == null) {
    // 没登录,重定向到登录页
    res.sendRedirect(req.getContextPath() + "/toLogin.do");
} else {
    // 已登录,请求继续执行
    chain.doFilter(req, res);
}

注:
这里重定向采用的是绝对路径,所以用req.getContextPath()更加灵活

3.在web.xml中配置

 <!-- 登录检查过滤器 -->
  <filter>
    <filter-name>login</filter-name>
    <filter-class>web.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>login</filter-name>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>

注:
这里先全部过滤,然后再在LoginFilter类中进行筛除

4.把不需要过滤的路径添加到数组中,再去获取当前的路径,然后遍历判断数组中的路径是否和当前的路径相等,如果相等则不需要过滤,后面代码不需要执行,程序的请求继续运行

String[] paths = new String[] { "/toLogin.do", "/login.do", "/createImg.do" };
String current = req.getServletPath();
for (String p : paths) {
    if (p.equals(current)) {
        chain.doFilter(req, res);
        return;
    }
}

相关文章

  • 电信计费(五)

    一.验证码匹配图解分析 分析:1.浏览器通过访问路径/toLogin.do访问服务器,服务器用MianServle...

  • 电信计费(二)

    一.增加资费图解分析 分析:完成此功能需要发送三个请求1.点击浏览器界面的增加按钮,访问路径为/toAddCost...

  • 电信计费(四)

    一.异常处理 1.新建一个jsp页面起名为error,在代码中把location.href的路径做修改 2.在we...

  • 电信计费(一)

    一.创建项目 2.导入Tomcat中的jar包 高亮选中项目->鼠标右键->Properties3.png3.在p...

  • 电信计费(三)

    一.登录功能图解分析 分析:1.浏览器输入/toLogin.do网址,进行访问服务器使用MainServlet中的...

  • 电信计费系统ETL开发

    本项目进行电信计费系统开发,基于ETL工具Informatica,SQL,数据库Oracle和PL/SQL进行开发...

  • 技术代码bug处理记录汇总(更新ing)

    自签名版本2改版本1的代码 安卓电信计费文件:关闭第三方支付 计费点名称时不时发生错误(名称不对) 华为测试1:无...

  • 2021-01-18计费出账工作的一点思考(一)

    电信运营商的计费出账是一件非常复杂要求又非常高的系统性的工作。在运营商内部负责处理计费出账工作的组织很长一段时间都...

  • 为什么你要整理客户资料?

    五年前,山东有个电信的计费项目,A公司志在必得,系统集成商、代理商组织了一个十几个人的小组,住在当地的宾馆里,天天...

  • 北京今天财富:电信运营商大数据变现关键技术环节

    传统的电信经营分析系统主要处理计费清单、客户业务 关系以及业务平台使用数据,采用文件批处理的方式进行数据仓库的ET...

网友评论

      本文标题:电信计费(五)

      本文链接:https://www.haomeiwen.com/subject/mchomftx.html