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 完成传值。