第一个功能:实现商品的预览功能。今天换一种方式,以前都是从持久层往前端写,如今从前端的请求开始日后写,可能易于理解。前端
<a href="<c:url value="/list?method=preArticle&id=${a.id }"/>"> //附带了商品的id
public void preArticle() throws ServletException, IOException { String id=request.getParameter("id"); Article article=service1.getById(id); article.setDiscount(8.8); request.setAttribute("article",article); request.getRequestDispatcher("/WEB-INF/jsp/preArticle.jsp").forward(request,response); }
public Article getById(String id) { return articleDao.selectById(id); }
DAO层的接口 public Article selectById(String id); DAO层的实现 <select id="selectById" resultMap="resultMap"> select * from ec_article where id=#{id} </select>
在preArticle.jsp中,将article中的内容作展现就能够了。java
第二个功能:sql
修改商品信息app
<a class="label label-success" href="<c:url value="/list?method=showUpdate&id=${a.id }&typeCode=${typeCode}&secondType=${secondType}&title=${title}"/>">修改</a>
<mapper namespace="per.lc.sms.dao.ArticleDao"> <resultMap id="resultMap" type="Article"> <result property="putAwayDate" column="PUTAWAY_DATE"/> <result property="dateTime" column="CREATE_DATE"/> <association property="articleType" javaType="ArticleType" column="TYPE_CODE" select="per.lc.sms.dao.ArticleTypeDao.selectByTypeCode"/>
</resultMap>
//per.lc.sms.dao.ArticleTypeDao.selectByTypeCode 表示在per.lc.sms.dao包下ArticleTypeDao类中的一个selectByTypeCode()方法,它会由TYPE_CODE查询到对应的ArticleType类,而后映射到articleType。
public void showUpdate() throws ServletException, IOException { String id=request.getParameter("id"); Article article=service1.getById(id); request.setAttribute("article",article); request.getRequestDispatcher("/WEB-INF/jsp/updateArticle.jsp").forward(request,response); }
<input type=text value="${article.articleType.name}" class="form-control" readonly="readonly" size="50">
<form name="articleform" class="form-horizontal" action="${pageContext.request.contextPath}/list?method=updateArticle"
public void updateArticle() throws ServletException, IOException {
//接受页面传过来的数据 String title=request.getParameter("titleStr"); String supplier=request.getParameter("supplier"); String locality=request.getParameter("locality"); String price=request.getParameter("price"); String storage=request.getParameter("storage"); String description=request.getParameter("description"); String id=request.getParameter("id"); String picUrl=request.getParameter("picUrl"); //修改以前的图片名。 //若是用户没有上传图片,使用修改以前的图片名 try{ //接收上传图片 Part part=request.getPart("image"); //若image为空,异常将会被捕获,后面的代码也可以执行。 //获取项目路径中 String sysPath=request.getSession().getServletContext().getRealPath("/resources/images/article"); //为文件命名 String file=UUID.randomUUID().toString(); //须要拿到文件的格式 String contentDisposition = part.getHeader("content-disposition");
//拿到图片的后缀 String suffix=contentDisposition.substring(contentDisposition.lastIndexOf("."),contentDisposition.length()-1);
//拼接 String fileName=file+suffix; //将其放在目录下 part.write(sysPath+"/"+fileName); picUrl=fileName; }catch (Exception e){ e.printStackTrace(); } Article article=new Article(); article.setTitle(title); article.setSupplier(supplier); article.setPrice(Double.parseDouble(price)); article.setLocality(locality); article.setStorage(Integer.parseInt(storage)); article.setDescription(description); article.setId(Integer.parseInt(id)); article.setImage(picUrl); service1.update(article); //执行修改的方法 showUpdate(); //回调展现页面 }
<update id="update" > update ec_article set <if test="title!=null">title=#{title},</if> <if test="supplier!=null">supplier=#{supplier},</if> <if test="price!=null">price=#{price},</if> <if test="image!=null">image=#{image},</if> <if test="locality!=null">locality=#{locality},</if> <if test="storage!=null">storage=#{storage},</if> <if test="description!=null">description=#{description}</if> where id=#{id} </update>
业务层的实现类dom
public void update(Article article) { articleDao.update(article); }