1、注解版的配置方式,最简单,推荐使用
<!-- 配置注解Handler -->
<!-- <bean class="cn.itcast.ssm.controller.ItemController1"></bean>-->
<!-- 当应用中有多个handler时,可以使用组件扫描所有Handler -->
<context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
<!-- 注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- 注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
<!--使用mvc:annotation-driven代替上面的注解映射器和注解适配器
mvc:annotation-driven默认加载了很多参数绑定方法,
-->
<!-- <mvc:annotation-driven/>-->
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置视图解析器的前缀和后缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
Controller类,无需实现任何接口
@Controller
@RequestMapping("/controller")//设置根路径
public class ItemController1{
private UserService userService;
//Controller方法第一种用法,返回void
@RequestMapping("/test_void.action")
public void controller01(HttpServletRequest request,HttpServletResponse response) throws Exception{
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
request.setAttribute("username",username);
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
}
}
2、要求编写的Handler实现HttpRequestHandler接口
applicationContext.xml配置Handler
<!-- 配置Handler -->
<bean id="queryItems2" class="cn.itcast.ssm.controller.ItemController2"></bean>
<!-- 另一种简单的处理器映射器配置,对url集中映射 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- key:url value:跳转进入的控制器的id -->
<prop key="/queryItems2.action">queryItems2</prop>
</props>
</property>
</bean>
<!-- 另一种处理器适配器 ,要求编写的Handler实现HttpRequestHandler接口-->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
Controller类,实现HttpRequestHandler接口
public class ItemController2 implements HttpRequestHandler{
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 调用service查数据库,这里使用静态数据
List<Items> itemList = new ArrayList<Items>();
Items item1 = new Items();
//将数据存放到域中
request.setAttribute("itemList",itemList);
//转发
request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request,response);
//使用此方法可以修改response,比如返回json数据
/*
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("person={name:'zhnagsan'}");
*/
}
}
3、要求编写的Handler实现Controller接口
applicationContext.xml配置
<!-- 配置Handler -->
<bean id="queryItems1" class="cn.itcast.ssm.controller.ItemController1"></bean>
<!-- 另一种简单的处理器映射器配置,对url集中映射 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- key:url value:跳转进入的控制器的id -->
<prop key="/queryItems1.action">queryItems1</prop>
</props>
</property>
</bean>
<!-- 配置处理器适配器,实现Controller接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
Controller类,实现Controller接口
public class ItemController1 implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse arg1) throws Exception {
//返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//相当于request中的setAttribute,存放在域中,在jsp页面取数据
modelAndView.addObject("itemList",itemList);
//指定视图
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
return modelAndView;
}
}