Spring 笔记 -spring mvc建立和请求处理

建立Spring MVC
一个web请求的流程
一个web请求的流程

DIspatcher Servlet的功能是识别和分配request给controller,同时也会识别Response来调用web。
Controller会识别用哪种方法(service)处理请求,也会返回处理结果。

首先需要创建和配置dispatcher servlet
(有些IDE会自动建立和配置)
Dispatcher 在用户请求传递给控制器之前拦截它们。要使dispatcher servlet拦截所有用户请求,就需要在web.xml 中配置它。
在xml中与其他servlet一样,在和中声明和配置。

在web.xml中

<servlet>
   <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--dispatcher servlet 在这个包中-->       
     <load-on-startup>1</load-on-startup>
             <!--这里设置加载的优先级,数越小,加载越优先-->
</servlet>
<servlet-mapping>
   <servlet-name>dispatcher</servlet-name>   
   <url-pattern>*.htm</url-pattern>    
   	<!--这里指明要处理的是哪个url,这句中指明所有的扩展名为.htm的请求都由dispatcher处理-->
 </servlet-mapping>

在web.xml建立好dispatcher后,其他的匹配只需要让spring 自动设置即可。

创建和配置controller

controllers是一个Java文件。

写一个controller,用@Controller 注释标注它,来声明它。

设置控制器的属性:
@RequestMapping:用于指定控制器处理的url 映射。
这些映射既可以在类级完成,也可以在方法级完成。
通过这层映射注释,dispatcher 就可以分辨哪一个controller控制哪些request。
该注释有以下参数:
value:此属性指定控制器所处理的URL。通常在类级指明。
method:指定控制器处理哪种方法的请求。通常在方法级指明。
method有以下属性:
RequestMethod.GET 指明要处理GET方法的请求用这个注释下的方法。 RequestMethod.POST 指明要处理POST方法的请求用这个注释下的方法。

例子一:不跳转到新页面的controller

建立了一个controller,由@RequestMapping可知,这是处理/hello.htm的请求,并且请求方法是get
方法级的@RequestMapping注释下的方法,就是对这个请求的处理(service)

@Controller
@RequestMapping(value="/hello.htm")
public class HelloMessageController {    
   @RequestMapping(method = RequestMethod.GET)
   public String helloWorld(ModelMap modelMap) {        
   	System.out.println("on method");        
   	modelMap.put("mssg", "Hello Spring !!");        
   	return "index";    
}}

jsp中请求:

<% response.sendRedirect("hello.htm"); %>

jSP直接发送对hello.htm的请求。然后controller根据请求处理。

例子二:跳转到新页面的controller
首先在一个jsp页面中,建立请求

<a href="index.htm">Index</a>
&nbsp;
<a href="contact.htm">Contact</a>

在controller页面,处理请求

@Controllerpublic class WebController {    
	@RequestMapping(value="/index.htm")    
	public String getIndex(){        
		return "index";    
	}    
	@RequestMapping(value="/contact.htm")    
	public String getContact(){        
		return"contact";    
	}
}

第一个处理方法,在controller中返回的是“index”没有前后缀。
是因为controller的返回会被 dispatcher 自动识别匹配
在spring MVC 自动创建的文件 dispatcher-servlet.xml 中 已经自动声明了对response的识别

在dispatcher-servlet.xml中

<bean id="viewResolver"
	class="org.springframework.web.servlet.view.InternalResourceViewResolver"
	p:prefix="/WEB-INF/jsp/"	<!--prefix表示jsp文件的前缀-->
	p:suffix=".jsp"             <!--suffix表示jsp文件的后缀-->
/>

前缀和后缀中间的部分就是控制器方法return的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值