• 每天进步一点点(二)


      果不其然,软件开发进度和预计时间存在出入,而且是很大出入,在开发前预计某某功能按照自己的自愿能很快实现,就算是自己非常熟悉的方面,在开发期间同样也会面临各种问题。今天解决了一个问题,另外又进一步学到ExtJs。

      一:关于防止未登录直接访问。这个其实是很好解决的问题,就session问题,但是在之前一直没有去解决这个问题,应该算是web安全最最最简单的安全了。如果是采用传统JSP+Servlet应该是很好解决的,不过到用了各种框架后也许就会显得力不从心无从下手。这次前台是采用ExtJs,后台则是Struts2。仅login.jsp和index.jsp两个界面,数据交互采用Ajax,昨天有提到ExtJs大部分接受的JSON,所以跳转在ExtJs中,为什么不在Struts配置文件中进行跳转呢?因为我想给给登陆界面login.jsp返回一个flag表示时候登陆成功,这个地方一定是可以在Struts配置文件中进行跳转的,不过目前还不知道。回到重点,我需要在登陆成功后将用户名、密码保存在session中,所以我在login.jsp对应的LoginAction.java中用到了ActionContext,代码如下:

        //保存session,防止未登录进行访问
        ActionContext actionContext = ActionContext.getContext();
        Map session = actionContext.getSession();
        session.put("username", name);
        session.put("userpass", password);

      这样就讲用户名和密码保存在了session里,当然必须是验证成功后才保存。

      同样在index.jsp需要取出session值,因为没有判断用户类型,所以仅做了是否为空判断,代码如下:

      <%
          String username = (String)session.getAttribute("username");
          String userpass = (String)session.getAttribute("userpass");
          if (username == null || userpass == null){
              response.sendRedirect("login.jsp");
          }
       %>

      OK!

      二:这个问题之前没有仔细深究过,是关于ExtJs与后台的交互问题,将前台数据提交到服务器端,简单点说,对于form表单提交有两种方式(目前所知),第一:采用this.up('form').getForm().submit({//code}),这种方式有点类似于JSP传递方式会将表单数据中的数据一一进行传递,而不是通过转换成JSON(但是也可以进行JSON传递),此种方式有的地方会比较简便,因为不需要对JSON解析,服务器端Struts2由于已经封装好所以只需要声明和前台一样的字段;第二:则是Ext.Ajax.request({//code})此种方式没有上一种将字段一一进行传递而是将其封装为JSON字符串,服务器端再进行解析。至于何种用哪种,必定两者都有其用武之地。

  • 相关阅读:
    398. Random Pick Index
    739. Daily Temperatures
    779. K-th Symbol in Grammar
    698. Partition to K Equal Sum Subsets
    783. Minimum Distance Between BST Nodes
    asp.netcore 深入了解配置文件加载过程
    啥叫K8s?啥是k8s?
    Asp.NetCore轻松学-实现一个轻量级高可复用的RabbitMQ客户端
    Asp.Net Core 轻松学-一行代码搞定文件上传
    目录---Asp.NETCore轻松学系列【目录】
  • 原文地址:https://www.cnblogs.com/yulinfeng/p/3879765.html
Copyright © 2020-2023  润新知