HttpServletRequest HttpServletResponse HttpSession 示例: @RequestMapping("edit.action") public ModelAndView editShop(HttpServletRequest request){ String name= request.getParameter("id"); }
//要求:该方法的形参名称必须和请求路径中的name值一致,尽量使用包装类型 //方式一:返回值类型为ModelAndView @RequestMapping("自己声明的映射路径") public ModelAndView edti(int id){//id与请求参数的name值一致 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name值","xxx");//将xxx对象以键值对的形式放入request共享域中,通过name值获取该对象 modelAndView.setsetViewName("itemList");//将页面的逻辑名称放入(前提:配置文件中已声明页面的前缀和后缀) return modelAndView; } //方式二:改变返回值类型及形参 @RequestMapping("自己声明的映射路径") public String query(Model model){ //Model 数据模型对象,主要作用添加属性 //ModelMap和Model的用法一致 model.addAttribute("name值","xxx");//将xxx对象以键值对的形式放入request共享域中,通过name值获取该对象 return "itemList";// 返回值为页面的逻辑名称(前提:配置文件中已声明页面的前缀和后缀) }
//@RequestParam(name="id") Integer idss //含义:把请求参数名称为id的值赋值给变量idss @RequestMapping("itemEdit.action") public String editShop02(@RequestParam(name="id") Integer idss,ModelMap modelMap) { System.out.println(idss); return "editItem"; }
// 需求: 把修改的内容提交封装到pojo类 //前提:提交的表单的name名必须跟pojo类中成员变量名一一对应 public String update(Object object){ System.out.println(object); return "success"; }
eb.xml中配置如下代码: <!-- 解决SpringMVC提交乱码问题 ,配置SpringMVC提供的过滤器CharacterEncodingFilter--> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- 该filter初始化的时候添加编码FilterConfig --> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
需求:使用包装的pojo类来接收查询条件.
实现方式一:传统的方式,使用HttpServletRequest 的request形参来接收你的查询条件。
实现方式二:在形参中使用保证的pojo类来接收。
分析特点:
页面传递参数的特点:变化性比较强。条件可能不固定。
包装类是对原来的pojo类进行扩充,提高程序的扩展性。
创建的包装pojo类:
//包装查询条件 public class QueryVo { //原有的类,保持完整性 private Shop shop; //包装的类 ,扩展功能 private ShopVo shopVo; set/get..... toString()..... } //包装Shop实体类 public class ShopVo extends Shop{ //在以后业务需求可能变化的情况下扩充新的属性 (提高程序的可扩展性) //1.添加新的属性,例如:原价,打折价。 //2.批量删除,接收多个id值,可能是多个集合或者数组属性 }
控制器中的方法: @RequestMapping("queryitem.action") public String queryShopByCondition(QueryVo queryVo) { System.out.println(queryVo); return "success"; }
jsp页面中搜索条件如下: <form action="${pageContext.request.contextPath }/queryitem.action" method="post"> 查询条件: <table width="100%" border=1> <tr> <!--其中name="shopVo.shop_id"和name="shopVo.shop_name" 表示的含义: 将提交的数据封装到查询包装类中成员变量shopVo中,而查询的条件name,id是包装类中的属性--> <td>商品编号:<input type="text" name="shopVo.shop_id" /></td> <td>商品名称:<input type="text" name="shopVo.shop_name" /></td> <td><input type="submit" value="查询" /></td> </tr> </table> </form>
// Converter<Soruce, Target> source原本的数据类型 Target 目标数据类型 public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { // TODO Auto-generated method stub SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date = format.parse(source); return date; } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
<!-- 配置处理器 (RequestMappingHandlerMapping,RequestMappingHandlerAdapter)--> <!-- conversion-service添加转化服务 --> <mvc:annotation-driven conversion-service="aa"></mvc:annotation-driven> <!-- 配置自己的转换器注入到SpringMVC中--> <bean name="aa" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- converters结果值是个集合 --> <property name="converters"> <set> <bean class="com.qf.converter.DateConverter"></bean> </set> </property> </bean>