一级类型和商品信息展示
ListServlet
package com.imooc.shop.action;
import com.imooc.shop.bean.Article;
import com.imooc.shop.bean.ArticleType;
import com.imooc.shop.service.ShopService;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/list")
public class ListServlet extends HttpServlet {
//定义业务类对象
private ShopService shopService;
private HttpServletRequest request;
private HttpServletResponse response;
@Override
public void init() throws ServletException {
super.init();
//获取Spring容器,然后从容器中得到业务层对象
ServletContext servletContext = this.getServletContext();
WebApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(servletContext);
shopService = (ShopService)context.getBean("shopService");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.request=request;
this.response=response;
//1.查询所有的一级类型数据
List<ArticleType> firstArticleTypes = shopService.loadFirstArticleTypes();
//2.查询所有的商品信息
List<Article> articles = shopService.searchArticles();
request.setAttribute("firstArticleTypes",firstArticleTypes);
request.setAttribute("articles",articles);
request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request,response);
}
}
ShopService
ShopServiceImpl
package com.imooc.shop.service;
import com.imooc.shop.bean.Article;
import com.imooc.shop.bean.ArticleType;
import com.imooc.shop.bean.User;
import com.imooc.shop.repository.ArticleMapper;
import com.imooc.shop.repository.ArticleTypeMapper;
import com.imooc.shop.repository.UserMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("shopService")
public class ShopServiceImpl implements ShopService {
//得到数据访问层对象
@Resource
private ArticleTypeMapper articleTypeMapper;
@Resource
private UserMapper userMapper;
@Resource
private ArticleMapper articleMapper;
@Override
public List<ArticleType> getArticleTypes() {
return articleTypeMapper.getArticleTypes();
}
@Override
public Map<String, Object> login(String loginName, String passWord) {
Map<String,Object> results = new HashMap<>();
//判断参数是否为空的
if(StringUtils.isEmpty(loginName)||StringUtils.isEmpty(passWord)){
//参数为空了
results.put("code",1);
results.put("msg","参数为空了");
}else{
//根据登录名称去查询用户对象
User user =userMapper.login(loginName);
if(user !=null){
//判断密码
if(user.getPassword().equals(passWord)){
//登录成功了
//应该将登陆成功的用户存到Session会话中
results.put("code",0);
results.put("msg",user);
}else{
//密码错误了
results.put("code",2);
results.put("msg","密码错误了");
}
}else{
//登录名不存在
results.put("code",3);
results.put("msg","登录名不存在");
}
}
return results;
}
@Override
public List<ArticleType> loadFirstArticleTypes() {
List<ArticleType> articleTypes =articleTypeMapper.getFirstArticleTypes();
return articleTypes;
}
@Override
public List<Article> searchArticles() {
return articleMapper.searchArticles();
}
}
ArticleMapper
<?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.imooc.shop.repository.ArticleMapper">
<select id="searchArticles" resultType="Article">
select * from ec_article
</select>
</mapper>
实现点击一级类型展示二级类型并且查询对应类型下的商品
ListServlet.java
package com.imooc.shop.action;
import com.imooc.shop.bean.Article;
import com.imooc.shop.bean.ArticleType;
import com.imooc.shop.service.ShopService;
import org.springframework.util.StringUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/list")
public class ListServlet extends HttpServlet {
//定义业务类对象
private ShopService shopService;
private HttpServletRequest request;
private HttpServletResponse response;
@Override
public void init() throws ServletException {
super.init();
//获取Spring容器,然后从容器中得到业务层对象
ServletContext servletContext = this.getServletContext();
WebApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(servletContext);
shopService = (ShopService)context.getBean("shopService");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
this.request=request;
this.response=response;
String method = request.getParameter("method");
switch (method){
case "getAll":
getAll();
break;
case "":
}
}catch (Exception e){
e.printStackTrace();
}
}
private void getAll() throws ServletException, IOException {
//接受一级类型编号查询
String typeCode =request.getParameter("typeCode");
//根据一级类型查询对应的二级类型
if(!StringUtils.isEmpty(typeCode)){
List<ArticleType> secondTypes = shopService.loadSecondTypes(typeCode);
request.setAttribute("secondTypes",secondTypes);
}
//1.查询所有的一级类型数据
List<ArticleType> firstArticleTypes = shopService.loadFirstArticleTypes();
//2.查询所有的商品信息
List<Article> articles = shopService.searchArticles(typeCode);
request.setAttribute("firstArticleTypes",firstArticleTypes);
request.setAttribute("articles",articles);
request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request,response);
}
}
shopServiceImpl
shopServlet
ArticleTypeMapper
ArticleMapper
ArticleMapper.xml
concat 连接字符串
实现商品标题搜索功能,动态sql语句介绍
在list.jsp中加入
<!-- 横幅下方的主体结束 -->
<!-- 一般来讲,css必须在head里面引入,因为页面加载完成,就需要显示正确的样式 -->
<!-- js一般在页面最后面加载,等页面布局都完成以后,再来处理js文件! -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="${pageContext.request.contextPath }/resources/jquery/jquery.js"></script>
<script src="${pageContext.request.contextPath }/resources/bootstrap/js/bootstrap.js"></script>
<script src="${pageContext.request.contextPath }/resources/js/taobao.js"></script>
<script type="text/javascript">
// 等整个加载完成以后为二级类型绑定切换事件
$(function () {
$("#secondType").change(function () {
window.location = "${pageContext.request.contextPath}/list?method=getAll&typeCode=${typeCode}&secondType=" + this.value;
});
// 把二级类型选中
$("#secondType").val("${secondType}");
});
</script>
ListServlet
private void getAll() throws ServletException, IOException {
//接受一级类型编号查询
String typeCode =request.getParameter("typeCode");
//接受二级类型编号查询
String secondType = request.getParameter("secondType");
//转回到界面,使二级类型选中
request.setAttribute("secondType",secondType);
//根据一级类型查询对应的二级类型
if(!StringUtils.isEmpty(typeCode)){
List<ArticleType> secondTypes = shopService.loadSecondTypes(typeCode);
request.setAttribute("typeCode",typeCode);
request.setAttribute("secondTypes",secondTypes);
}
//1.查询所有的一级类型数据
List<ArticleType> firstArticleTypes = shopService.loadFirstArticleTypes();
//2.查询所有的商品信息
List<Article> articles = shopService.searchArticles(typeCode,secondType);
request.setAttribute("firstArticleTypes",firstArticleTypes);
request.setAttribute("articles",articles);
request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request,response);
}
shopService
shopServiceImpl
ArticleMapper
ArticleMapper.xml
实现搜索功能
ListServlet
private void getAll() throws ServletException, IOException {
//接受一级类型编号查询
String typeCode =request.getParameter("typeCode");
//接受二级类型编号查询
String secondType = request.getParameter("secondType");
//接受标题搜索
String title = request.getParameter("title");
//转回界面
request.setAttribute("title",title);
//转回到界面,使二级类型选中
request.setAttribute("secondType",secondType);
//根据一级类型查询对应的二级类型
if(!StringUtils.isEmpty(typeCode)){
List<ArticleType> secondTypes = shopService.loadSecondTypes(typeCode);
request.setAttribute("typeCode",typeCode);
request.setAttribute("secondTypes",secondTypes);
}
//1.查询所有的一级类型数据
List<ArticleType> firstArticleTypes = shopService.loadFirstArticleTypes();
//2.查询所有的商品信息
List<Article> articles = shopService.searchArticles(typeCode,secondType,title);
request.setAttribute("firstArticleTypes",firstArticleTypes);
request.setAttribute("articles",articles);
request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request,response);
}
shopService
shopServiceImpl
ArticleMapper
ArticleMapper.xml
解决编码问题
ListServlet