前提:
对于处理器映射器和适配器,我们不需要编写,只需要引入jar包中的就是行了。但是,这里注意,关于处理器映射器和适配器实现类有很多,不同的实现类对我们对其他的配置要求不同。所以要针对不同的类做不同的分析。
一、 映射器:
1.<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
要求:这里要求在配置handler的时候,他的beanname为url
2.<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<!-- 对itemsController进行url映射,url是 /queryItems1.action-->
<props>
<prop key="/queryItems1.action">ItemsController1</prop>
</props>
</property>
</bean>
这里key是路径,红字为配置handler的beanname
二、适配器
1.<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
要求编写的handler需要实现Controller接口
示例代码:
public class ItemsController1 implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse resp) throws Exception {
List<Items>itemsList=new ArrayList<Items>();
//向list添加数据
Items items_1=new Items();
items_1.setName("电脑");
items_1.setPrice(6000f);
items_1.setDetail("联想笔记本壳。");
itemsList.add(items_1);
Items items_2=new Items();
items_2.setName("手机");
items_2.setPrice(7000f);
items_2.setDetail("联想手机。");
itemsList.add(items_2);
Items items_3=new Items();
items_3.setName("鼠标");
items_3.setPrice(10000f);
items_3.setDetail("联想鼠标。");
itemsList.add(items_3);
//返回ModelAndView
ModelAndView modelAndView=new ModelAndView();
//相当于reques的setAtrribute,在jsp页面中通过itemsList来获取数据
modelAndView.addObject("itemsList", itemsList);
//制定视图
modelAndView.setViewName("/WEB-INF/JSP/itemsList.jsp");
return modelAndView;
}
}
2.<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
需要实现HttpRequestHandler接口。
示例代码:
public class httpItemsController implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
List<Items>itemsList=new ArrayList<Items>();
//向list添加数据
Items items_1=new Items();
items_1.setName("电脑222");
items_1.setPrice(6000f);
items_1.setDetail("联想笔记本壳222。");
itemsList.add(items_1);
Items items_2=new Items();
items_2.setName("手机222");
items_2.setPrice(7000f);
items_2.setDetail("联想手机222。");
itemsList.add(items_2);
Items items_3=new Items();
items_3.setName("鼠标22");
items_3.setPrice(10000f);
items_3.setDetail("联想鼠标22。");
itemsList.add(items_3);
//设置模型数据
request.setAttribute("itemsList", itemsList);
//设置转发的视图
request.getRequestDispatcher("/WEB-INF/JSP/itemsList.jsp").forward(request, arg1);
}
}
对于第二种适配器实现类可以通过response,设置相应的数据格式,比如响应的json数据
response.SetCharacterEncoding("utf-8")
response.setContentType("application/json;charset=utf-8")
rsponse.getWriter().write("json串")
另:注意如果我们没有配置这些适配器和映射器,
这里前端控制器会到这个文件中去找映射器、适配器、视图解析器等组件。