1.配置前端控制器
<!-- contextConfigLocation 配置springmvc加载的配置文件 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析
第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
使用此种方式可以实现 RESTful风格的url
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
然后便在源文件下新建一个springmvc.xml
2.在springmvc.xml中配置处理器适配器
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
3.开发Handler 实现Controller接口,注意:setViewName表示设置待解析的jsp页面,将属性值传给这个页面
public class ItemsHandler1 implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//调用service 查询商品列表,这里使用静态数据模拟
ArrayList<Items>list=new ArrayList<Items>();
list.add(new Items("小米",1299,"性价比最高"));
list.add(new Items("华为",3999,"华为荣耀,你值得拥有"));
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("list", list);
modelAndView.setViewName("/items.jsp");
return modelAndView;
}
}
4.视图编写
items.jsp
<c:forEach var="item" items="${list}">
手机名称:${item.name }
价 格: ${item.price }
介 绍: ${item.detail }<br/>
</c:forEach>
5.配置映射器
<!-- 配置Handler -->
<bean name="/queryItems.action" class="com.ssm.controller.ItemsHandler1" ></bean>
<!-- 处理器映射器 将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url) -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
6.配置视图解析器
<!-- 视图解析器 解析JSP视图 ,默认使用jstl 保证classpath下有jstl的包-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
附:
若出错
HTTP Status 404 - /SpringStudy/items2.jsp
则表明:处理器映射器根据url 找到了Handler , 但 ModelAndView 中 setViewName 参数错误,找不到解析的jsp页面