每天进步一点点(二)
果不其然,软件开发进度和预计时间存在出入,而且是很大出入,在开发前预计某某功能按照自己的自愿能很快实现,就算是自己非常熟悉的方面,在开发期间同样也会面临各种问题。今天解决了一个问题,另外又进一步学到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字符串,服务器端再进行解析。至于何种用哪种,必定两者都有其用武之地。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?