spring mvc 体验

Controller层次结构:

处理器映射:

BeanNameUrlHandlerMapping

SimpleUrlHandlerMapping(推荐)

MultiActionController的配置方式:

默认使用InternalPathmethodNameResolver进行方法名的解析

还可以使用ParameterMethodNameResolver,PropertiesMethodNameResolver进行解析


使用MultiActionController实现多动作请求

MultiActionController中请求处理的方法签名
  // 'anyMeaningfulName'指任意方法名
  public [ModelAndView | Map | void] anyMeaningfulName(HttpServletRequest, HttpServletRequest [,HttpSession] [,AnyObject])
  方法签名中除了可以指定HttpServletRequest与HttpServletRequest外,还可以指定 HttpSession与AnyObject,AnyObject可以是命令对象类型或异常类型,当为命令对象
  类型时,可以接收参数信息。

使用ParameterMethodNameResolver实现对方法名的解析


一个例子

web.xml中DispatcherServlet的配置:

<!-- 配置加载service与dao,这里省去 ,这里所有配置都写在了classpath:applicationContext.xml。
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext-dao.xml,classpath:applicationContext-service.xml</param-value>
	</context-param>
	 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
 -->
	<!-- 配置DispatcherServlet -->
	<servlet>
		<servlet-name>example</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 
			  可以不配置init-param,默认加载example-servlet.xml
			 example与配置的DispatcherServlet名称相对应
		 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>example</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
blogController类:

/**
 * @author evan
 * 请求处理的方法签名
 * // 'anyMeaningfulName'指任意方法名
 * public [ModelAndView | Map | void] anyMeaningfulName
 * 	(HttpServletRequest, HttpServletRequest [,HttpSession] [,AnyObject])
 * 方法签名中除了可以指定HttpServletRequest与HttpServletRequest外,还可以指定
 * HttpSession与AnyObject,AnyObject可以是命令对象类型或异常类型,当为命令对象
 * 类型时,可以接收参数信息。
 */
public class BlogController extends MultiActionController {
	
	private BlogServiceImpl blogService;
	
	public void setBlogService(BlogServiceImpl blogService) {
		this.blogService = blogService;
	}
	
	public ModelAndView addBlog(HttpServletRequest request,
			HttpServletResponse response,HttpSession session,Blog blog) throws Exception {
		
		//打印sessionId与blog,验证是否已传递参数
		System.out.println("sessionId      ------>"+session.getId());
		System.out.println("blog           ------>"+blog);
		blogService.execute();
		
		ModelAndView modelAndView=new ModelAndView();
		modelAndView.setViewName("success");
		modelAndView.addObject("hello", "helloworld");
		modelAndView.addObject("type","addBlog");
		return modelAndView;
	}

	public ModelAndView showBlog(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		blogService.execute();
		return new ModelAndView("showBlog", "type", "showBlog...");
	}
	
	public ModelAndView deleteBlog(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		blogService.execute();
		return new ModelAndView("success", "type", "deleteBlog");
	}
	
}

BlogServiceImpl类:

package cn.enjoylife.springmvc.service.impl;

/**
 * @author evan
 *
 */
public class BlogServiceImpl {

	public void execute(){
		System.out.println("execute......");
	}
}
applicationContext.xml

        <!-- 使用简单url处理器映射 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<value>
				/blog/blogManager.html=blogController
				...
				...
    		</value>
		</property>
	</bean>

	<!-- 配置视图解析器 ,使用jstl视图-->
	<bean id="jspViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

	<!-- 使用ParameterMethodNameResolver作用方法名解析器 -->
	<bean id="methodNameResolver"
		class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="method" />
	</bean>

	<!-- methodNameResolver用于配置所使用的方法名解析器 -->
	<bean id="blogController" class="cn.enjoylife.springmvc.web.action.BlogController">
		<property name="blogService" ref="blogService" />
		<property name="methodNameResolver" ref="methodNameResolver" />
	</bean>

	<bean id="blogService" class="cn.enjoylife.springmvc.service.impl.BlogServiceImpl" />

访问方式:

http://localhost:8080/spring_mvc/blog/blogManager.html?method=deleteBlog   对应deleteBlog方法

http://localhost:8080/spring_mvc/blog/blogManager.html?method=addBlog&id=222    对应addBlog方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值