• Spring MVC 学习笔记3


    1. WEB-INF/web.xml 这里定义了获取请求后,执行的第一步。抓取请求。

    	<servlet>
    		<servlet-name>appServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    


    2. WEB-INF/spring/appServlet/servlet-context.xml 这里定义了Dispatcher Servlet模式
    	<!--Default Annotation model- Dispacher Servlet-->
    	<!-- Enables the Spring MVC @Controller programming model -->
    	<annotation-driven />
    
    
    	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    	<resources mapping="/resources/**" location="/resources/" />


    3. src.main.java.edu.bit.myhello/HelloController.java
    //Controller文件:处理请求,完成操作。
    package edu.bit.myhello;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    
    @Controller//@Controller注入
    public class HelloController {
    	
    	//表示用哪个url请求来对应本方法:
    	@RequestMapping({"/hello","/"})
    	public String hello(){
    		System.out.println("Hello, HelloController");
    		return "hello00";	//返回一个hello字串,会调用WEB-INF/views/hello00.jsp进行显示。
    	}
    }



    Spring MVC 传值(一)

    1. 从视图传值给Controller

    Internal View Resolver 方法, 通过函数的参数来传递。

    在HelloController.java文件中,
    -----------

    	@RequestMapping({"/hello"})
    	public String hello(String stringIn){	//此时在浏览器中输入 {url}/hello?stringIn=AAA
    	System.out.println(stringIn);
    	return "hello";	
    	}
    ==========

    可见,有 public String hello(String stringIn) ,通过函数参数传值给Controller的方法。
    这里介绍使用@RequestParam来传值给Controller。

    在src/main/java/.../HomeController.java中

    	@RequestMapping({"/view2controller"})	// ?inString=AAA,通过这种方式传值、请求
    	public String view2controller(@RequestParam("inString") String reString){
    				   //(@RequestParam("inString") String reString)
    		System.out.println(reString);
    		return "home";	//mapback to home.jsp
    	}
    
    浏览器中输入: ${url}/view2controller?inString=ABCD回车,Console中显示:XXX
    如果浏览器中输入: ${url}/view2controller回车,浏览器显示400错误。
    即:【如果必须传值,使用@RequestParam要求一下,不必须,直接用view2controller(String reString)】


    2. 从Controller传值给视图

    在Controller的方法中,创建"Map<String,Object> context","context.put("stringOut", stringIn)"
    在hello.jsp中,加入${stringOut}.
    如:
      在HelloController.java文件中,
    ----------
    	@RequestMapping({"/hello"})
    	public String hello(String stringIn,Map<String,Object> context){   //Map String Obj. context
    	context.put("stringOut", stringIn);	//add context.put<Stringkey, ObjectValue>
    	System.out.println(stringIn);
    	return "hello";	
    	}

    ==========
      在hello.jsp中:
    ----------
    	<body>
    		<p>hello!!, ${stringOut}.</p>
    	</body>
    
    ==========

    在浏览器地址栏中输入:{url}/hello?StringIn=my dear redfish
    显示:hello! my dear red fish.

    Spring MVC 传值(二)——使用Model,从Controller传值给视图

      在homeController.java文件中,定义method时,使用Model而不是Map

    ----------

    @RequestMapping({"/home"})  
    public String home(String homenameIn,Model model){   //我们习惯使用Model而不是Map  
    model.addAttribute("homeMsg",homenameIn);  //model.addAttribute加入一个分配  
    return "home";    
    }  
    ===========

    home.jsp中,同样使用${homeMsg} 完成显示。

    浏览器中,同样使用 /home?homenameIn= my redfish 完成传值。


  • 相关阅读:
    bash中一次性给多个变量赋值命名管道的使用
    Mysql复制还原后root帐号权限丢失问题
    TC中HTB的使用备注
    Python 调用JS文件中的函数
    PIL图像处理模块,功能强大、简单易用(转)
    openfeign 实现动态Url
    Extjs 进度条的应用【转】
    Javascript 对象与数组中的函数下【转】
    Linq学习笔记之一:Linq To XML
    Sql Server查询语句的一些小技巧
  • 原文地址:https://www.cnblogs.com/sonictl/p/6735599.html
Copyright © 2020-2023  润新知