forward(直接请求转发)是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果你需要在下一个页面中能从中获取新的信息的话,你可以Request.setAttribute()来放置一些标志,这样从下一个页面中获取。
redirect(间接请求转发)是完全的跳转,浏览器将会得到跳转的地址, 并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,forward更加高效,在forward可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。
下面是自己的代码:
/** * 商品请求处理类 * @author Administrator * */ @Controller @RequestMapping("/admin/goodstype/") public class GoodsTypeAction { GoodsTypeDao goodsTypeDao = null; /** * 删除商品 * @param code * @return */ @RequestMapping("/delete") public String deletegoodsType(int code){ goodsTypeDao = new GoodsTypeDao(); goodsTypeDao.deleteGoodsType(code); return "forward:/admin/goodstype/goodstypeList"; } /** * 更新修改保存商品 * @param goodstype * @return */ @RequestMapping("/update") public String updateGoodsType(GoodsType goodstype){ goodsTypeDao = new GoodsTypeDao(); goodsTypeDao.updateGoodsType(goodstype); return "redirect:/admin/goodstype/goodstypeList"; } }
-------------------------------------------------------------------------------------------------------------------------------------
public class GoodsTypeDao extends BaseDao { private static final String NAMESPACE_NAME = "com.carshop.mapper.GoodsTypeMapper."; /** * 删除指定商品code * @param code * @return */ public int deleteGoodsType(int code){ SqlSession session = getSqlSession(); int count = session.delete(NAMESPACE_NAME+"deleteGoodsType",code); session.commit(); closeSqlSession(); return count; } /** * 通过code获取商品详情 * @param code * @return */ public GoodsType getGoodsTypeByCode(String code){ SqlSession session = getSqlSession(); GoodsType Goodstype = session.selectOne(NAMESPACE_NAME+"getGoodsTypeByCode",code); closeSqlSession(); return Goodstype; } /** * 更新修改商品 * @param code * @return */ public int updateGoodsType(GoodsType goodstype){ SqlSession session = getSqlSession(); int count = session.update(NAMESPACE_NAME+"updateGoods",goodstype); session.commit(); closeSqlSession(); return count; } }
-------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.carshop.mapper.GoodsTypeMapper"> <!-- 预编译sql语句,提高重用--> <sql id="findgoodstype"> select * from e_goods_type </sql> <!-- 获取商品类型--> <select id="getGoodsTypeList" resultType="goodsType"> <include refid="findgoodstype"/> order by code asc </select> <!-- 根据code删除商品--> <select id="deleteGoodsType"> delete from e_goods_type where code = #{code} </select> <!-- 根据code查询商品 --> <select id="getGoodsTypeByCode" resultMap="goodstype"> <include refid="findgoodstype"/> <where> code = #{code} </where> </select> <!-- 更新修改商品 --> <update id="updateGoods"> update e_goods_type set name=#{name},remark=#{remark} where code=#{code} </update> <!-- 定义ResultMap --> <resultMap type="GoodsType" id="goodstype" autoMapping="true"> <!-- 定义列和java对象属性的对应关系 --> <!-- 映射:column是数据库列名 property是dto的定义名; 我们经常使用定义名来方便获取数据 --> <result column="code" property="code"/> <result column="name" property="name"/> <result column="remark" property="remark"/> </resultMap> </mapper>