java – Spring MVC – 控制器之间的继承变量值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring MVC – 控制器之间的继承变量值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1747字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring MVC – 控制器之间的继承变量值](/upload/InfoBanner/zyjiaocheng/732/a7b8623a61404583bd2aeb322d5785f7.jpg)
我有两个继承自MainController的控制器.每个控制器的范围是“会话”.在MainController中我有一个变量:Index,只需按照:
@Controller
public class C1 extends MainController {
@RequestMapping(value="/action1")
public void Action1() {
System.out.print(Index);
}
}
@Controller
public class C2 extends MainController {
@RequestMapping(value="/action2")
public void Action2() {
System.out.print(Index);
}
}
public class MainController {
protected int Index = 0;
@ModelAttribute("BeforeRequest")
public void BeforeRequest(HttpServletRequest request) {
if (request.getRequestURI().contains("action1")) {
Index++;
}
}
}
当“Action1”运行时,Index在MainController中增加1(ModelAttribute注释).在C1变量每个请求增加1,但在C2中仍然是0(如定义).
有可能将“当前值”注入C2吗?
解决方法:
如果要计算用户访问站点的次数,有几种方法.一种简单的方法是创建一个servlet过滤器,该过滤器映射到所有递增请求计数的请求并将其放在用户的会话中.
这在web.xml中:
<filter>
<filter-name>RequestCountFilter</filter-name>
<filter-class>com.mycompany.RequestCountFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RequestCountFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器实现看起来像这样:
public class RequestCountFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession();
Integer requestCount = session.getAttribute("requestCount") == null 0 : session.getAttribute("requestCount");
session.setAttribute("requestCount", ++requestCount);
chain.doFilter(req, res);
}
public void init(FilterConfig config) throws ServletException {
// init code goes here
}
public void destroy() {
// clean up goes here
}
}
内容总结
以上是互联网集市为您收集整理的java – Spring MVC – 控制器之间的继承变量值全部内容,希望文章能够帮你解决java – Spring MVC – 控制器之间的继承变量值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。