一、动态显示数据表格列数字对应内容
Category书籍类别实体 :
package com.dzl.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;
}
@Override
public String toString() {
return "Category [id=" + id + ", name=" + name + "]";
}
}
CategoryDao加载下拉框 :
package com.dzl.dao;
import java.util.List;
import com.dzl.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);
}
}
CategoryAction :
package com.dzl.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dzl.dao.CategoryDao;
import com.dzl.entity.Category;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.ResponseUtil;
public class CategoryAction extends ActionSupport implements ModelDriver<Category> {
private Category category = new Category();
private CategoryDao categoryDao=new CategoryDao();
private Category category2;
// @Override重写模型驱动方法
public Category getModel() {
// TODO Auto-generated method stub
return category;
}
// @Override 加载书籍类别下拉框
public String combobox(HttpServletRequest req, HttpServletResponse resp) {
try {
List<Category> list = categoryDao.list(category, null);
ResponseUtil.writeJson(resp, list);
} catch (Exception e) {
// TODO Auto-generated catch block
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;
}
}
BookVo
vo:view object视图模型对象
用在哪里:在同一个页面显示多张表的数据
package com.dzl.vo;
import java.util.Date;
import com.dzl.entity.Book;
import com.fasterxml.jackson.annotation.JsonFormat;
public class BookVo {
private String cname;
private long id;
private String name;
private String pinyin;
private long cid;
private String author;
private float price;
private String image;
private String publishing;
private String description;
private int state;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date deployTime;
private int sales;
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
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;
}
public String getPinyin() {
return pinyin;
}
public void setPinyin(String pinyin) {
this.pinyin = pinyin;
}
public long getCid() {
return cid;
}
public void setCid(long cid) {
this.cid = cid;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getPublishing() {
return publishing;
}
public void setPublishing(String publishing) {
this.publishing = publishing;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public Date getDeployTime() {
return deployTime;
}
public void setDeployTime(Date deployTime) {
this.deployTime = deployTime;
}
public int getSales() {
return sales;
}
public void setSales(int sales) {
this.sales = sales;
}
@Override
public String toString() {
return "BookVo [cname=" + cname + ", id=" + id + ", name=" + name + ", pinyin=" + pinyin + ", cid=" + cid
+ ", author=" + author + ", price=" + price + ", image=" + image + ", publishing=" + publishing
+ ", description=" + description + ", state=" + state + ", deployTime=" + deployTime + ", sales="
+ sales + "]";
}
}
BookVoDao :
package com.dzl.dao;
import java.util.List;
import com.dzl.vo.BookVo;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;
public class BookVoDao extends BaseDao<BookVo>{
// @Override查詢
public List<BookVo> list(BookVo bookvo, PageBean pageBean) throws Exception {
String sql="select b.*,c.name as cname from t_easyui_book b,t_easyui_category c where b.cid =cid";
String name = bookvo.getName();
int state = bookvo.getState();
if (StringUtils.isNotBlank(name)) {
sql += " and name like '%" + name + "%'";
}
if (state != 0) {
sql += " and state=" + state;
}
return super.executeQuery(sql, BookVo.class, pageBean);
}
}
二、门户首页书籍类别显示
主页面index.jsp添加一行:
<input type="hidden" id="ctx" value="${pageContext.request.contextPath}">
index:
$(function(){
$.ajax({
url:$("#ctx").val()+"/category.action?methodName=combobox",
success:function(data){
alert(data);
var jsonArr = eval("("+data+")");
var html = '';
for ( var i in jsonArr) {
html+='<li class="list-group-item">'+jsonArr[i].name+'</li>'
}
$(".list-group").append(html);
}
})
})
三、按照书籍类别查询书籍信息
目标:按照书籍的类别查询出对应的书籍信息
前端:
从首页index.jsp传递书籍类别ID到后台来查询
不是发ajax请求
后端:
通过类别id查询对应书籍集合,到前台遍历
后台是有返回值的
BookAction :
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";
}
index.js :
$(function(){
$.ajax({
url:$("#ctx").val()+"/category.action?methodName=combobox",
success:function(data){
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);
}
})
})
四、网络图片上传
bookDao :
// 修改图片地址
public void editImgUrl(Book t) throws Exception {
super.executeUpdate("update t_easyui_book set image=? where id=?", t,
new String[] {"image","id"});
}
BookAction :
//图片上传
public String upload(HttpServletRequest request, HttpServletResponse resp) throws Exception {
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(resp, 1);
}
}
} catch (Exception e) {
e.printStackTrace();
ResponseUtil.writeJson(resp, 2);
}
return null;
}
DateUtil :
package com.zking.util;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期处理工具包
* @author Administrator
*
*/
public class DateUtil {
/**
* 日期转字符串
* @param date
* @param format
* @return
*/
public static String formatDate(Date date,String format){
String result="";
SimpleDateFormat sdf=new SimpleDateFormat(format);
if(date!=null){
result=sdf.format(date);
}
return result;
}
/**
* 字符串转日期
* @param str
* @param format
* @return
* @throws Exception
*/
public static Date formatString(String str,String format) throws Exception{
SimpleDateFormat sdf=new SimpleDateFormat(format);
return sdf.parse(str);
}
/**
* 获取当前时间的字符串
* @return
* @throws Exception
*/
public static String getCurrentDateStr()throws Exception{
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
return sdf.format(date);
}
}
resource.properties(图片上传保存路径)
diskDir=E:/temp/2021/mvc/upload/
serverDir=/uploadImages/
PropertiesUtil (文件解析类) :
package com.zking.util;
import java.io.InputStream;
import java.util.Properties;
/*文件解析类*/
public class PropertiesUtil {
public static String getValue(String key) throws Exception{
Properties p=new Properties();
InputStream in=PropertiesUtil.class.getResourceAsStream("/resource.properties");
p.load(in);
return p.getProperty(key);
}
}
配置路径:配置到server的Host里面
<Context path="/uploadImages" docBase="E:/temp/2021/mvc/upload"/>
</Host>