一.门户首页类别

知识:学一个查询书籍的方法,在index.js中运用ajax技术,然后定义一个jsonarry来接收数据, 接着用一个html来拼接数据,最后显示出来。

1.entity类别实体类

package com.zking.entity;public class Category {private long id;private String name;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Category [id=" + id + ", name=" + name + "]";}}

2.CategoryDao

package com.zking.dao;import java.util.List;import com.zking.entity.Category;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;public class CategoryDao extends BaseDao<Category> {
//    查询书籍分类public List<Category> list(Category category,PageBean pageBean) throws Exception {String sql = "select * from t_easyui_category where 1=1";long id=category.getId();if(id!=0) {sql+=" and id = "+id;}return super.executeQuery(sql,Category.class, pageBean);
}
}

3.CategoryAction

package com.zking.web;import com.zking.dao.CategoryDao;
import com.zking.entity.Category;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.ResponseUtil;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;public class CategoryAction extends ActionSupport implements ModelDriver<Category> {private Category category = new Category();private CategoryDao categoryDao = new CategoryDao();/*** 加载书籍类别下拉框* @param req* @param resp* @return*/public String combobox(HttpServletRequest req, HttpServletResponse resp){try {List<Category> list = categoryDao.list(category, null);ResponseUtil.writeJson(resp,list);} catch (Exception e) {e.printStackTrace();}return null;}public String load(HttpServletRequest req, HttpServletResponse resp){try {//传递id到后台,只会查出一个类别Category c= categoryDao.list(category, null).get(0);ResponseUtil.writeJson(resp,c);} catch (Exception e) {e.printStackTrace();}return null;}@Overridepublic Category getModel() {return category;}}

4.配置mvc.xml

<action type="com.zking.web.CategoryAction" path="/Category">
</action>

5.js拼接

//门户首页类别
$(function(){$.ajax({url:$("#ctx").val()+"/Category.action?methodName=combobox",success:function(data){
//      var jsonstr='[{"id":1,"name":"文艺"},{"id":2,"name":"小说"},{"id":3,"name":"生活"}]'alert(data);var jsonArr=eval("("+data+")");var html='';for(var i in jsonArr){html+='<li class="list-group-item" onclick="searchByType('+jsonArr[i].id+')">'+jsonArr[i].name+'</li>';}$(".list-group").append(html);}});
})

展示效果:

二.书籍类别查询

效果:点击左菜单栏,出现对应的书籍

1.在index.js中要给对应的方法添加点击事件,并附带id传到index.jsp界面

2.当点击左侧菜单栏时要附带改类别的id传到搜索书籍的方法

3.最后查询出改类别所有的书籍,先是在bookdao加上cid的条件,最后在bookAction中调用

BookDao

 public List<Book> list(Book book, PageBean pageBean) throws Exception {String sql="select * from t_easyui_book where 1=1";String name=book.getName();int state = book.getState();long cid=book.getCid();if(StringUtils.isNotBlank(name)) {sql+=" and name like '%"+name+"%'";}if(state!=0) {sql+=" and state="+state;}if(cid!=0) {sql+=" and cid="+cid;}return super.executeQuery(sql,Book.class, pageBean);}

bookAction

/*** 目标:按照书籍的类别查询出对应的书籍信息* 前端:从首页index.jsp传递书籍类别id到后台查询* 不是发送ajax请求* 后端:* 通过类别id查询出对应书籍集合,到前台遍历* 后台有返回值* @param req* @param resp* @return*/public String findByType(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean =new PageBean();pageBean.setRequest(req);List<Book>list=bookDao.list(book, pageBean);req.setAttribute("books",list);req.setAttribute("pagebean",pageBean);} catch (Exception e) {e.printStackTrace();}return "findBook";}

配置mvc.xml

<action type="com.zking.web.BookAction" path="/book">
<forward path="/fg/findBook.jsp" redirect="false" name="findBook"/>

书籍界面展示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head><meta charset="utf-8"><title>网上书城首页</title><link href="https://cdn.bootcss.com/twitter-bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet"><link href="${pageContext.request.contextPath}/static/css/fg.css" rel="stylesheet"><script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script><script src="${pageContext.request.contextPath}/static/js/index.js"></script>
</head>
<body>
<input type="hidden" id="ctx" value="${pageContext.request.contextPath}">
<div class="container"><div class="row head"><div class="col-md-12"><i>您好,欢迎来到飞凡网上书店!</i><b><a type="button" class="text-primary" href="${pageContext.request.contextPath}/login.jsp">登录</a> |<a type="button" class="text-primary" href="${pageContext.request.contextPath}/register.jsp">注册</a> |<a type="button" class="text-primary" href="${pageContext.request.contextPath}/shopping.action?methodName=list">我的购物车</a> |<a type="button" class="text-primary" href="${pageContext.request.contextPath}/">网站首页</a></b></div></div><!-- 横幅搜索栏 start --><div class="row banner"><div class="img1"></div><div class="col-md-12"><form class="form" action="${pageContext.request.contextPath}/book.action?methodName=findByName" method="post"><%--<input type="hidden" name="methodName" value="findByName">--%><input type="text" name="name" value="" id="input" class="search"><input type="submit" class="btn btn-primary" value="查询"></form></div></div><!-- 横幅搜索栏 end --><!-- 页面主体内容 start --><div class="row content"><div class="col-md-3 float-left c-left"><ul class="list-group"><li class="list-group-item">书籍分类</li><%--<li class="list-group-item">999999999999999999999999999999999999</li>--%></ul></div><div class="col-md-9 float-right c-right"><div class="row"><div class="col-md-12"><img class="img-fluid" src="${pageContext.request.contextPath}/static/img/banner.png"></div></div><div class="row c-category"><div class="col-md-12 text-left"><img src="${pageContext.request.contextPath}/static/img/title_bj.png"><h3>新书上架</h3></div></div><%--<div class="row">--%><%--<div class="col-md-2">--%><%--<figure class="figure">--%><%--<img src="imgs/1.png" class="figure-img img-fluid rounded" alt="...">--%><%--<figcaption class="figure-caption">--%><%--<p>小说名字</p>--%><%--<i class="text-danger">价格</i>--%><%--</figcaption>--%><%--</figure>--%><%--</div>--%><%--</div>--%><div class="row c-category"><div class="col-md-12 text-left"><img src="${pageContext.request.contextPath}/static/img/title_bj.png"><h3>热销图书</h3></div></div><%--<div class="row">--%><%--<div class="col-md-2">--%><%--<figure class="figure">--%><%--<img src="imgs/1.png" class="figure-img img-fluid rounded" alt="...">--%><%--<figcaption class="figure-caption">--%><%--<p>小说名字</p>--%><%--<i class="text-danger">价格</i>--%><%--</figcaption>--%><%--</figure>--%><%--</div>--%><%--</div>--%></div></div><!-- 页面主体内容 end --><!-- 网站版权 start --><div class="row text-center footer"><div class="col-md-12">Copyright ©2014 飞凡教育,版权所有</div></div><!-- 网站版权 end -->
</div><script type="text/javascript">function searchByType(cid){//alert(cid);location.href='${pageContext.request.contextPath}/book.action?methodName=findByType&cid='+cid;};//门户首页类别<li class="list-group-item">99</li>将html拼接出来$(function () {//   上架新书$.ajax({url: '${pageContext.request.contextPath}/book.action?methodName=news',dataType: "json",data: "rows=18",success: function (data) {// data = eval(data);// $(".c-category").next().append("444");console.log(data);single_item($(".c-category:eq(0)"), data.rows, 0, "");// debugger;}});//   热销书籍$.ajax({url: '${pageContext.request.contextPath}/book.action?methodName=hot',dataType: "json",data: "rows=18",success: function (data) {// data = eval(data);// $(".c-category").next().append("444");console.log(data);single_item($(".c-category:eq(1)"), data.rows, 0, "");// debugger;}});function single_item($node, data, level, htmlstr) {// debugger;var start = level * 6;htmlstr += '<div class="row">';for (var i = 0; i < 6; i++) {if (data.length == start) {break;}htmlstr += '<div class="col-md-2">'htmlstr += '<figure class="figure">';htmlstr += '<img src="' + data[start].image + '" class="figure-img img-fluid rounded" alt="...">';htmlstr += '<figcaption class="figure-caption">';htmlstr += '<p>' + data[start].name + '</p>';htmlstr += '<i class="text-danger">' + data[start].price + '</i>';htmlstr += '</figcaption>';htmlstr += '</figure>';htmlstr += '</div>';start++;}htmlstr += '</div>';level++;if (start < data.length) {single_item($node, data, level, htmlstr);} else {$node.after(htmlstr);}}})</script>
</body>
</html>

展示效果:

三.图片上传

思路:

1.导入图片上传需要的jar包

2.BookDao中写好修改image路径的方法

3.BookAction中写好上传图片的方法

4.到eclipse内部服务器中配置好图片映射

bookAction

public String upload(HttpServletRequest request, HttpServletResponse response) {try {FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List<FileItem> items = upload.parseRequest(request);Iterator<FileItem> itr = items.iterator();HttpSession session = request.getSession();while (itr.hasNext()) {FileItem item = (FileItem) itr.next();if (item.isFormField()) {System.out.println("普通字段处理");book.setId(Long.valueOf(request.getParameter("id")));} else if (!"".equals(item.getName())) {String imageName = DateUtil.getCurrentDateStr();// 存入数据的的数据,以及浏览器访问图片的映射地址String serverDir = PropertiesUtil.getValue("serverDir");// 图片真实的存放位置String diskDir = PropertiesUtil.getValue("diskDir");// 图片的后缀名String subfix = item.getName().split("\\.")[1];book.setImage(serverDir + imageName + "." + subfix);item.write(new File(diskDir + imageName + "." + subfix));this.bookDao.editImgUrl(book);ResponseUtil.writeJson(response, 1);}}} catch (Exception e) {e.printStackTrace();}return null;}

工具类

package com.zking.util;import java.text.SimpleDateFormat;
import java.util.Date;/*** 日期处理工具包* @author Administrator**/
public class DateUtil {*//*** 获取当前时间的字符串* @return* @throws Exception*/public static String getCurrentDateStr()throws Exception{Date date=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");return sdf.format(date);}
}

文件解析类

package com.zking.util;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class PropertiesUtil {public static String getValue(String key) throws IOException{Properties p=new Properties();InputStream in=PropertiesUtil.class.getResourceAsStream("/resources.properties");p.load(in);return p.getProperty(key);}}

配置resource.properties文件内容 

diskDir=E:/temp/2021/mvc/upload/
serverDir=/uploadImages/

到server服务里调路径

      <Context docBase="E:/temp/2021/mvc/upload/" path="/uploadImages"/>

展示效果:

门户书籍,类别查询,图片上传相关推荐

  1. 06_04_任务一:拉勾教育后台管理系统[课程管理模块、图片上传、 BeanUtils封装实体类](SSM)

    拉勾教育后台管理系统(SSM) 1. 项目架构 1.1 项目介绍 ​ 拉勾教育后台管理系统,是提供给拉勾教育的相关业务人员使用的一个后台管理系统, 业务人员可以在 这个后台管理系统中,对课程信息.广告 ...

  2. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)

    Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...

  3. SSM框架实现图片上传并查询数据库中的图片(多图片上传请看下篇博客)

    第一步:首先要在我们的springMVC.xml文件中添加上传文件解析器 <!-- 定义文件上传解析器 --> <bean id="multipartResolver&qu ...

  4. php网页添加图片的代码,天天查询-PHP版的kindeditor编辑器加图片上传水印功能

    首先简单介绍一下kindeditor编辑器: KindEditor 是一套开源的在线HTML编辑器,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...

  5. JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器

    知识回顾 springmvc框架 用户请求url到DispatcherServlet前端控制器,相当于中央调度器,降低系统各组件之间的耦合度. DispatcherServlet前端控制器通过Hand ...

  6. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

  7. bootstrap-fileinput的简单使用(图片上传和编辑)

    简介: 一款非常优秀的HTML5文件上传插件,支持bootstrap 3.x 和4.x版本,具有非常多的特性:多文件选择.这个插件能最简单的帮你完成文件上传功能,且使用bootstrap样式.还支持多 ...

  8. 一个Ext2+SWFUpload做的图片上传对话框

    一个Ext2+SWFUpload做的图片上传对话框的例程 我们先看看对话框的布局: 布局就是在一个窗口里内嵌一个表格控件,窗口的底部工具条带一个进度条,表格的顶部工具条带几个操作按钮和一个下来选择框, ...

  9. element显示服务器的图片,Vue+ElementUI+SpringMVC实现图片上传和回显

    Vue+ElementUI+SpringMVC实现图片上传和table回显 而我们也常遇到表单中包含图片上传的需求,并且需要在table中显示图片,所以这里我就讲一下结合后端的SpringMVC框架如 ...

最新文章

  1. 一步步学习SPD2010--第十四章节--在Web页面使用控件(3)--验证用户数据输入
  2. 慢慢学Linux驱动开发,第十章,GNU C的扩展
  3. 14 个 Spring MVC 顶级技巧,随时用随时爽,一直用一直爽
  4. catia打开后拖动工具栏有残影_Photoshop工具和工具栏概述
  5. 《软件需求》读后感03
  6. 2016级算法第六次上机-A.Bamboo之寻找小金刚
  7. keepalived实现nginx的高可用
  8. python源码只有编译成二进制_Python源码包和二进制包(包含打包过程细节讲解)...
  9. C++Primer第五版——习题答案详解(九)
  10. P5068 [Ynoi2015]我回来了
  11. 在JSP中使用JavaBean
  12. SQL Server - THROW字句对比RAISERROR子句
  13. 动态链接库的隐式动态链接和显示动态链接
  14. 一个maven错误:org/apache/maven/shared/filtering/MavenFilteringException
  15. 12、图解横向扩容过程,如何超出扩容极限,以及如何提升容错性
  16. dell 7447加装SSD
  17. 用友/U8+V16.0修改单据时,其他入库单其他出库单无保质期信息且置灰无法输入/修改
  18. 你真的懂智慧园区数字平台?快来看看吧
  19. 机器人学编程简介~2019~
  20. 金融信贷风控中的机器学习

热门文章

  1. 宝箱十连抽保底设计思路
  2. 原生js html insert,js中AppendChild与insertBefore的用法详细解析
  3. 英语语法笔记Day8——特殊句型
  4. 如何撰写高效且实用的Prompt
  5. 一名25岁的董事长给大学生的18条忠告
  6. 自动化渗透测试工具开发实践
  7. vue、css修改滚动条样式
  8. 数字图像处理实验之彩色图像处理
  9. 计算机学院篮球赛主题,计算机学院第七届“光熙杯”篮球赛开幕
  10. 苹果nfc功能怎么开启_苹果手机中很值得用的5个功能,教你一键开启,好用不止一倍...