• springmvc中controller不要定义全局变量


    springmvc中controller不要定义全局变量

    因为controller是默认单例模式,高并发下全局变量会出现线程安全问题
    现这种问题如何解决呢?
    第一种方式: 既然是全局变量惹的祸,那就将全局变量都编程局部变量,通过方法参数来传递。
    第二种方式: jdk提供了java.lang.ThreadLocal,它为多线程并发提供了新思路。
    第三种:使用@Scope(“session”),会话级别

       @Controller  
        //把这个bean 的范围设置成session,表示这bean是会话级别的,  
        @Scope("session")  
        public class XxxController{  
            private List<String> list ;  
     
          //@PostConstruct当bean加载完之后,就会执行init方法,并且将list实例化;  
            @PostConstruct  
            public void init(){  
                list = new ArrayList<String>();  
            }  
     
        }
    

    第四种:将控制器的作用域从单例改为原型,即在spring配置文件Controller中声明 scope=“prototype”,每次都创建新的controller

    作者:盼超师兄
    来源:CSDN
    原文:https://blog.csdn.net/weixin_33387378/article/details/87933743
    版权声明:本文为博主原创文章,转载请附上博文链接!

    SpringMVC Rest url数据(重点)

    SpringMVC请求资源路径的URL可以通过{XXX}形式指定动态的URL,动态URL中的这个可变参数的值可以直接注入到方法对应的参数中。

    @RequestMapping(value="path/{var}",method=RequestMethod.GET)
    @ResponseBody
    public String withPathVariable(@PathVariable String var) {
    	return "Obtained 'var' path variable value '" + var + "'";
    }
    
    /**
    	
    	 * RESTFul结构
    	 * 格式特点:
    	 * 	1.在url中将需要提交的参数使用"/"进行分割
    	 * 		localhost:8091/addUser/1/tom
    	 *  2.在接收端,将参数使用{}包裹并且参数的位置固定.
    	 *  3.变量的名称必须和{}中的名称一致,之后通过@PathVariable
    	 *    实现数据的传递.
    	 *  
    	 *  功能:
    	 *  	1.实现了通用页面的跳转问题.
    	 *  	2.减少了代码传递的字节数.
    	 */
    @RequestMapping("/page/{moduleName}")
    	public String module(@PathVariable String moduleName){
    		
    		return moduleName;
    	}
    
    

    通过@PathVariable注解指定参数变量var获取请求url中{var}数据

  • 相关阅读:
    以CCF CSP认证为抓手,积极探索软件基础能力递进式培养体系
    HDU1878 欧拉回路
    HDU1878 欧拉回路
    Java---casting(对象转型)
    Java---package和import语句
    Java---方法的重写
    Java---继承中的构造方法
    Java---内存分析
    Java---多个类写在一个类文件中
    Java---SSH框架认识
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494200.html
Copyright © 2020-2023  润新知