什么是页面特殊参数?
在Leopard中,定义的页面特殊参数就是在controller中只需要写上这个参数的名字,就可以在方法中拿到值 。比如:sessUserId, 就是从session中获取userId的值。
Leopard中定义了很多页面特殊参数,包括:
proxyIp:获取离服务器最近的机器IP
requestUri:当前请求的URI
sessCaptcha:session中的验证码
sessionId:获取sessionId
sessUserId:当前登录的用户ID
sessUsername:当前登录的用户名
userAgent:获取浏览器类型(User-Agent)
这些参数被定义为Leopard页面特殊参数,或者称之为关键字参数。以上页面特殊参数,就像java的关键字一样。在页面传递的时候,如果出现同名的参数,将被忽略页面参数值。举个例子:比如你在页面提交时有一个属性名为sessUserId,被赋值为1,而session中的sessUserId是2,那么在controller中全拿到的值是2,而不是1。1将被忽略,因此在页面传递时,请不要使用以上页面特殊参数。
通过上以上的描述,相信各位同学对页面特殊参数已经有了一定的了解。
对于页面特殊参数,那就是一个字“屌炸天”!对不起,请宽恕我,我是受坐山雕的影响!
在web系统中,难免会将一些会话中常用的值存入Session中,比如说:当前登录用户的机构信息、当前登录用户的角色信息、当前登录用户的用户信息等等。
当需要从Session中获取值时,通常会采取在Controller 的方法入口参数传入HttpServletRequest ,然后再调用request.getSession().getAttribute("xxxx")来获取值。严谨的写法,还需要判断requst.getSession、返回值等是否为空?
例如:在session中获取userId的值,通常的写法如下:
package io.leopard.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; public class SessionUtil { public static String getSessUserId(HttpServletRequest request) { String sessUserId = ""; HttpSession session = request.getSession(); if (session != null) { sessUserId = (String) session.getAttribute("sessUserId"); } return sessUserId; } }
那么在Controller里获取sessUserId如下:
package io.leopard.web.mvc.controller; import io.leopard.util.SessionUtil; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class UserController { @RequestMapping(value = "/checkMobile.do") public ModelAndView checkMobile(HttpServletRequest request) throws IOException { ModelAndView model = new ModelAndView("/web/user/checkMobile"); String userId = SessionUtil.getSessUserId(request); return model; } }
以上方法,有二点让我难以接受:
1、在checkMobile方法里传入了HttpServletRequest这个参数,因为HttpServletRequest是一个包装对象,编写测试代码时需要参照源码进行参数值设置。
2、每次获取userId都需要写一行代码:SessionUtil.getSessUserId(request);
原始的写法我们已经见识,那么在Leopard中的写法是怎么样的呢?只需要在方法入口中传入sessUserId这个参数即可,代码如下:
package io.leopard.web.mvc.controller; import java.io.IOException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class UserController { @RequestMapping(value = "/checkMobile.do") public ModelAndView checkMobile(String sessUserId) throws IOException { ModelAndView model = new ModelAndView("/web/user/checkMobile"); return model; } }
真是应了那一个字-“屌炸天”,那么sessUserId是怎么获取到对应的值的呢?只需要简单的二步即可以搞定:
1、实现接口PageParameter中的二个方法:getKey(), getValue(HttpServletRequest request);
2、注册实现类为bean,使用注解的形式。对了,别忘记在xml中进行扫描。
上例中sessUserId的实现代码如下:
package io.leopard.web4j.parameter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang.NotImplementedException; import org.springframework.stereotype.Service; /** * 获取当前登录的自定义用户Id * * @author 阿海 * */ @Service public class SessUserIdPageParameter implements PageParameter { @Override public String getValue(HttpServletRequest request) { String sessUserId = ""; HttpSession session = request.getSession(); if (session != null) { sessUserId = (String) session.getAttribute("sessUserId"); } return sessUserId; } @Override public String getKey() { return "sessUserId"; } }
Leopard不建议在session中存入过多的参数,尤其是对象参数。存入过多参数,在开启分布式时,有可能会导致情能问题!
相关推荐
标题 "OS + Unix FreeBSD / MacOSX Snow Leopard 10.6.3-8 / MacBook Pro / apple / MC373" 提供了关于操作系统安装和配置的信息,涉及到的主要知识点包括: 1. **Unix FreeBSD**: Unix FreeBSD 是一个自由、开放...
数据集-目标检测系列- 豹子 猎豹 检测数据集 leopard - DataBall 标注文件格式:xml 解析脚本地址:https://gitcode.com/DataBall/DataBall-detections-100s/overview 脚本运行方式: * 设置脚本数据路径 path_data ...
Teneo的功能丰富的聊天客户端 •••••••• 关于 Leopard聊天UI是的功能丰富的聊天客户端。 Teneo能够随每个响应一起返回丰富的数据,而Leopard利用这些响应来呈现交互式...cd leopard-chat-ui-teneo npm instal
Leopard CRM是一款开源的客户关系管理系统,其设计目标是帮助企业或组织有效管理和追踪与客户的互动。作为开源软件,它的源代码公开,允许用户根据自身需求进行定制化开发,同时也鼓励社区成员参与改进和扩展功能。 ...
Leopard Tweaker为Leopard提供了一系列有用,省时和性能改进的工具。
Mac OS X Leopard是苹果公司开发的操作系统Mac OS X的第十个主要版本,它在2007年发布,带来了许多新特性和改进。VMware Workstation是一款强大的虚拟机软件,允许用户在个人计算机上运行多个操作系统,包括Mac OS X...
[Leopard-Raws] Chuunibyou demo Koi ga Shitai! Ren OP (MX 1280x720 x264 AAC).ass
LeopardAssist 协助在不满足 867MHz 或更快处理器的最低系统要求的机器上安装 OS X Leopard。 它通过将脚本临时写入基于 G4 的 Mac 的 NVRAM 来实现这一点。 在启动时执行,此脚本将暂时强制系统报告安装了更快的...
黑苹果必用--leopard写入硬盘系统文件,用Leopard 硬盘安装助手给硬盘写入MAC OS的时候出现 not a HFS partition C,系统自带分区后一个10G一个30G 10G的盘符格式为FAT32 磁盘标识已用DiskGenius修改为AF ,但是用...
Git Mac 版本git-1.8.3-intel-universal-snow-leopard.dmg
10.6-Leopard教程 每一步都附有截图,非常详细,本人刚刚装成功
MAC+OS+X+10.5+Leopard使用教程,里面包括安装双系统,以及如何使用mac的图解教程。
RocketDock 让你在使用 windows 更加的动感了,它运用着极少的内存以及CPU资源,让你就算使用着旧计算机,也不会感到计算机变慢。内建多种面板模式,以及一组的图标,如果觉得面板模式太少或是图标太少,还可以自行...
LeopardAssist协助在不满足867MHz或更快处理器的最低系统要求的计算机上安装OS X Leopard。 它是通过将脚本临时写入基于G4的Mac的NVRAM中来实现的。 在启动时执行此脚本,它将临时强制系统报告已安装了更快的处理器...
"Leopard硬盘安装助手"是一款专门用于安装Apple Mac OS X Leopard操作系统的工具,适用于10.6、10.7、10.8以及10.5版本。这个工具简化了用户在硬盘上安装Leopard的过程,使得非技术人员也能轻松进行系统安装。下面将...
Mac OS X 10.5(PowerPC G4,PowerPC G5)的当前WebKit框架的内部版本。 为了复兴Snow Leopard,至少需要一名具备开发开源软件技能的志愿者!
必填下载,速度比较快,我用1晚上完成。好像是国外的种子,一般在10个以上。
新鲜出炉:leopard硬盘安装史重要更新:leopard硬盘安装助手!!支持iso文件! 1、格式化一盘为fat32,或将盘上所有文件(含隐藏的)删空 2、打开程序,选镜象文件(支持iso文件) 3、目标盘选刚才格的盘,点开始进行镜象 4、...