The import java.sql cannot be resolved
The import javax.servlet.ServletException cannot be resolved
前台,查询本周热卖商品
先用 LEFT JOIN 建立左连接,以 orderitem 订单项表为主,用 ON 去笛卡尔积。再用 GROUP BY 以商品 id 进行分类,用聚合函数计算销售量,然后用 SELECT 选择需要映射的列,LIMIT 方言限定行数,最后用 ORDER BY 进行降序排列。
SELECT products.id,products.name,products.imgurl,orderitem.buynum FROM orderitem LEFT JOIN products ON orderitem.product_id = products.id GROUP BY orderitem.product_id ORDER BY SUM(orderitem.buynum) DESC LIMIT 0,3
前台,根据名字查询商品
SELECT * FROM products WHERE name LIKE '%" + searchfield + "%' LIMIT ?,?
前台,生成订单时将商品数量减少
UPDATE products set pnum = pnum - ? where id = ?
后台,多条件查询商品
@Override
public List<Product> findProductByManyCondition(String id, String name, String category, String minprice,
String maxprice) throws SQLException {
String sql ="select * from products where 1=1";
//存参数
List<Object> objs = new ArrayList<Object>();
if (id != null && id.trim().length() > 0) {
sql += " and id like \"%\"?\"%\"";
objs.add(id);
}
if (name != null && name.trim().length() > 0) {
sql += " and name like \"%\"?\"%\"";
objs.add(name);
}
if (category != null && category.trim().length() > 0) {
sql += " and category = ?";
objs.add(category);
}
if (minprice != null && minprice.trim().length() > 0) {
sql += " and price >= ?";
objs.add(minprice);
}
if (maxprice != null && maxprice.trim().length() > 0) {
sql += " and price <= ?";
objs.add(maxprice);
}
sql += " order by id";
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
return (List<Product>) runner.query(sql, new BeanListHandler<Product>(Product.class), objs.toArray());
}
后台,查询所有订单
public List<Order> findAllOrder()throws SQLException{
// 1.创建sql
String sql = "select orders.*,user.* from orders,user where user.id=orders.user_id order by orders.user_id";
// 2.创建QueryRunner对象
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
// 3.返回QueryRunner对象query()方法的查询结果
return runner.query(sql,new ResultSetHandler<List<Order>>(){
public List<Order> handle(ResultSet rs)throws SQLException{
// 创建订单集合
List<Order> orders = new ArrayList<Order>();
// 循环遍历订单和用户信息
while(rs.next()){
Order order = new Order();
order.setId(rs.getString("orders.id"));
order.setMoney(rs.getDouble("orders.money"));
order.setOrdertime(rs.getDate("orders.ordertime"));
order.setPaystate(rs.getInt("orders.paystate"));
order.setReceiverAddress(rs.getString("orders.receiverAddress"));
order.setReceiverName(rs.getString("orders.receiverName"));
order.setReceiverPhone(rs.getString("orders.receiverPhone"));
User user = new User();
user.setId(rs.getInt("user.id"));
user.setEmail(rs.getString("user.email"));
user.setGender(rs.getString("user.gender"));
user.setActiveCode(rs.getString("user.activecode"));
user.setIntroduce(rs.getString("user.introduce"));
user.setPassword(rs.getString("user.password"));
user.setRegistTime(rs.getDate("user.registtime"));
user.setRole(rs.getString("user.role"));
user.setState(rs.getInt("user.state"));
user.setTelephone(rs.getString("user.telephone"));
user.setUsername(rs.getString("user.username"));
order.setUser(user);
orders.add(order);
}
return orders;
}
});
}
Server Tomcat v9.0 Server at localhost failed to start.
function user_login(){
try{
var a="${user.username}";
if(a != null && a != "" && a != ""){
return true;
}else{
var flag = window.confirm("请您先登陆");
return false;
}
}catch(err){
var flag = window.confirm("请您先登陆");
return false;
}
}
<a href="${pageContext.request.contextPath}/index.jsp" target="_blank"
onclick="javascript:return confirm_logout();">返回前台</a>
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建javaBean,将上传数据封装.
Product p = new Product();
Map<String, String> map = new HashMap<String, String>();
// 封装商品id
map.put("id", IdUtils.getUUID());
DiskFileItemFactory dfif = new DiskFileItemFactory();
// 设置临时文件存储位置
dfif.setRepository(new File(this.getServletContext().getRealPath("/temp")));
// 设置上传文件缓存大小为10m
dfif.setSizeThreshold(1024 * 1024 * 10);
// 创建上传组件
ServletFileUpload upload = new ServletFileUpload(dfif);
// 处理上传文件中文乱码
upload.setHeaderEncoding("utf-8");
try {
// 解析request得到所有的FileItem
List<FileItem> items = upload.parseRequest(request);
// 遍历所有FileItem
for (FileItem item : items) {
// 判断当前是否是上传组件
if (item.isFormField()) {
// 不是上传组件
String fieldName = item.getFieldName(); // 获取组件名称
String value = item.getString("utf-8"); // 解决乱码问题
map.put(fieldName, value);
} else {
// 是上传组件
// 得到上传文件真实名称
String fileName = item.getName();
fileName = FileUploadUtils.subFileName(fileName);
// 得到随机名称
String randomName = FileUploadUtils.generateRandonFileName(fileName);
// 得到随机目录
String randomDir = FileUploadUtils.generateRandomDir(randomName);
// 图片存储父目录
String imgurl_parent = "/productImg" + randomDir;
File parentDir = new File(this.getServletContext().getRealPath(imgurl_parent));
// 验证目录是否存在,如果不存在,创建出来
if (!parentDir.exists()) {
parentDir.mkdirs();
}
String imgurl = imgurl_parent + "/" + randomName;
map.put("imgurl", imgurl);
IOUtils.copy(item.getInputStream(), new FileOutputStream(new File(parentDir, randomName)));
item.delete();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
try {
// 将数据封装到javaBean中
BeanUtils.populate(p, map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
ProductService service = new ProductService();
try {
// 调用service完成添加商品操作
service.addProduct(p);
response.sendRedirect(request.getContextPath() + "/listProduct");
return;
} catch (RuntimeException e) {
e.printStackTrace();
response.getWriter().write("添加商品失败");
return;
}
}
对多个表进行增加、修改或删除,需要开启事务,若有一个不成功就发生回滚。
// 普通用户删除订单
public void delOrderByIdWithClient(String id){
try{
// 开启事务
DataSourceUtils.startTransaction();
// 从订单项中查找商品购买数量
Order order=new Order();
order.setId(id);
List<OrderItem> items=oidao.findOrderItemByOrder(order);
// 修改商品数量
pdao.updateProductNum(items);
// 删除订单项
oidao.delOrderItems(id);
// 删除订单
odao.delOrderById(id);
}catch(SQLException e){
e.printStackTrace();
try{
DataSourceUtils.rollback();
}catch(SQLException e1){
e1.printStackTrace();
}
}finally{
try{
DataSourceUtils.releaseAndCloseConnection();
}catch(SQLException e){
e.printStackTrace();
}
}
}
JAVA字符串格式化-String.format()的使用
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
NoticeService nService = new NoticeService();
List<Notice> notices = nService.getAllNotices();
for (Notice notice : notices) {
String time = notice.getN_time();
String temp = String.format("%s-%s-%s %s:%s:%s", time.substring(0, 4),time.substring(4, 6),time.substring(6,8),
time.substring(8, 10),time.substring(10, 12),time.substring(12, 14));
notice.setN_time(temp);
}
req.setAttribute("notices", notices);
req.getRequestDispatcher("/admin/notices/list.jsp").forward(req, resp);
}
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class EncodingFilter
*/
@WebFilter("/EncodingFilter")
public class EncodingFilter implements Filter {
// 定义替换后的字符集,从过滤器的配置参数中读取
private String characterEncoding;
/**
* Default constructor.
*/
public EncodingFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("web.xml中该过滤器配置的encoding值为" + characterEncoding);
request.setCharacterEncoding(characterEncoding);
response.setContentType("text/html;charset=" + characterEncoding);
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// 获取web.xml中filter配置的参数
if (fConfig.getInitParameter("encoding") != null) {
characterEncoding = fConfig.getInitParameter("encoding");
} else {
characterEncoding = "UTF-8";
}
}
}
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>bookstore.web.filter.EncodingFilter</filter-class>
<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>/*
MySQL5.7与MySQL5.5的差异,导致项目直接运行失败。(我电脑上是5.5,服务器上是5.7)
问题出现的原因:
MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)