最近很多小伙伴都在问是否可以跨多个控制器访问带有SpringMVC注释的会话变量?和一个controller调用多个service这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展A
最近很多小伙伴都在问是否可以跨多个控制器访问带有Spring MVC注释的会话变量?和一个controller调用多个service这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展ASP.NET MVC 中的会话变量、asp.net-mvc – MVC 4:多个控制器动作参数、asp.net-mvc – 单个控制器的MVC多个视图、asp.net-mvc – 启用/禁用每个控制器/操作方法的会话状态等相关知识,下面开始了哦!
本文目录一览:- 是否可以跨多个控制器访问带有Spring MVC注释的会话变量?(一个controller调用多个service)
- ASP.NET MVC 中的会话变量
- asp.net-mvc – MVC 4:多个控制器动作参数
- asp.net-mvc – 单个控制器的MVC多个视图
- asp.net-mvc – 启用/禁用每个控制器/操作方法的会话状态
是否可以跨多个控制器访问带有Spring MVC注释的会话变量?(一个controller调用多个service)
我有一个运行Spring 3.0并使用Spring-MVC的Web应用程序。我有几个这样设置的控制器:
@Controller@RequestMapping("/admin")@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})public class AdminController {...}@Controller@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})public class PublicController {....}
我可以使用以下方法将带注释的变量添加到ModelMap中:
map.addAttribute("user", "Bob");
可以很好地将变量保留在当前控制器中;我可以通过该控制器中任何其他方法从modelMap访问var。但是,当用户点击另一个控制器中的页面时,即使@SessionAttributes中列出了相同的变量,第二个控制器中也无法使用该变量。
是否可以使用注释跨多个控制器访问这些注释变量?
答案1
小编典典不,这是不可能的-在我看来,SessionAttributes的名称很错误。
如果要在不同的控制器之间共享这些属性,则可以使用以下命令将它们显式放入会话中:
session.setAttribute()
ASP.NET MVC 中的会话变量
我正在编写一个 Web
应用程序,它允许用户浏览到网站中的多个网页,发出某些请求。用户输入的所有信息都将存储在我创建的对象中。问题是我需要从网站的任何部分访问这个对象,我真的不知道实现这一点的最佳方法。我知道一种解决方案是使用会话变量,但我不知道如何在
asp .net MVC 中使用它们。我将在哪里声明一个会话变量?还有其他方法吗?
asp.net-mvc – MVC 4:多个控制器动作参数
{controller} / {action} / {id} / {other id}?
我是MVC的新手(来自普通网页).如果不可能,MVC是否提供了一个帮助方法,如网页中可用的UrlData?
解决方法
routes.MapRoute( "NewRoute",// Route name "{controller}/{action}/{id}/{another_id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional,another_id = UrlParameter.Optional } // Parameter defaults );
然后在控制器的操作中,您可以选择如下参数:
public ActionResult MyAction(string id,string another_id) { // ... }
asp.net-mvc – 单个控制器的MVC多个视图
www.example.com/List/Cars/ForSale/{id} optional
www.example.com/List/Cars/ForRent/{id} optional
www.example.com/List/Search/
www.example.com/List/Boats/ForSale/{id} optional
www.example.com/List/Boats/ForRent/{id} optional
www.example.com/List/Boats/Search/
如果没有,除了将CarsController和BoatsController分开之外,还有什么方法可以绕过它吗?他们将使用相同的逻辑,只是希望URL不同.
解决方法
以下是定义上述网址的示例:
routes.MapRoute("CarSale" "/List/Cars/ForSale/{id}",new { controller = "list",action = "carsale",id = UrlParameter.Optional } ); routes.MapRoute("ListSearch" "/List/search",action = "search"} ); routes.MapRoute("BoatSale" "/List/Boats/ForSale/{id}",action = "boatsale",id = UrlParameter.Optional } );
然后在您的控制器中,您将拥有每个的操作方法:
public ListController { // ... other stuff public ActionResult CarSale(int? id) { // do stuff return View("CarView"); } public ActionResult BoatSale(int? id) { // do stuff return View("BoatView"); } // ... other stuff }
asp.net-mvc – 启用/禁用每个控制器/操作方法的会话状态
我们的建议是手动定义哪些URL模式应由负载均衡器缓存。对于我们来说这将是一个相当简单的过程,因为我们的“目录”页面是相对静态的,然后是“订购”页面。
必须避免在缓存页面上使用会话状态,因为整个响应由负载平衡器缓存 – 这包括发送的任何Cookie。
理想情况下,会有一个可以应用于控制器或动作方法的属性,允许选择性地使用会话状态,但似乎不是一个。我意识到这样一种方法会导致丢失的会话,如果使用离开“会话区” – 没关系。
除了重新实现整个ASP.NET MVC HTTP控制器…任何建议?
提前致谢。
解决方法
今天关于是否可以跨多个控制器访问带有Spring MVC注释的会话变量?和一个controller调用多个service的分享就到这里,希望大家有所收获,若想了解更多关于ASP.NET MVC 中的会话变量、asp.net-mvc – MVC 4:多个控制器动作参数、asp.net-mvc – 单个控制器的MVC多个视图、asp.net-mvc – 启用/禁用每个控制器/操作方法的会话状态等相关知识,可以在本站进行查询。
本文标签: