基于JSP的订单管理系统

基于JSP的订单管理系统

主要是基于jsp进行前后端交互进行数据库的增删改查。

流程就是:servlet获取前端数据,调用service层进行业务操作,service层再调用dao层,dao层执行和数据库的连接等等操作之后返回数据。

由于我自己主要做的是供应商这一块,我就主要放这一块的代码吧

前端jsp代码

首先是providelist.jsp页面

<div class="right">
   <div class="location">
       <strong>你现在所在的位置是:</strong>
       <span>供应商管理页面</span>
   </div>
   <div class="search">
       <form method="get" action="${pageContext.request.contextPath }/provider/providerSearch">
           <input name="method" value="query" type="hidden">
           <span>供应商编码:</span>
           <input name="queryProCode" type="text" value="${queryProCode }">

           <span>供应商名称:</span>
           <input name="queryProName" type="text" value="${queryProName }">

           <input value="查 询" type="submit" id="searchbutton">
           <a href="${pageContext.request.contextPath }/jsp/provideradd.jsp">添加供应商</a>
       </form>
   </div>
   <!--供应商操作表格-->
   <table class="providerTable" cellpadding="0" cellspacing="0">
       <tr class="firstTr">
           <th width="10%">供应商编码</th>
           <th width="20%">供应商名称</th>
           <th width="10%">联系人</th>
           <th width="10%">联系电话</th>
           <th width="10%">传真</th>
           <th width="10%">创建时间</th>
           <th width="30%">操作</th>
       </tr>
       <c:forEach var="provider" items="${PROVIDER_LIST}" varStatus="status">
           <tr>
               <td>
               <span>${provider.proCode }</span>
               </td>
               <td>
               <span>${provider.proName }</span>
               </td>
               <td>
               <span>${provider.proContact}</span>
               </td>
               <td>
               <span>${provider.proPhone}</span>
               </td>
               <td>
               <span>${provider.proFax}</span>
               </td>
               <td>
               <span>
               <fmt:formatDate value="${provider.creationDate}" pattern="yyyy-MM-dd"/>
               </span>
               </td>
               <td>
               <span><a class="deleteProvider" href="${pageContext.request.contextPath}/provider/providerDelete?id=${provider.id}"><img src="${pageContext.request.contextPath }/images/schu.png" alt="删除" title="删除"/></a></span>
               <span><a class="viewProvider" href="${pageContext.request.contextPath}/provider/providerView?id=${provider.id}"><img src="${pageContext.request.contextPath }/images/read.png" alt="查看" title="查看"/></a></span>
               <span><a class="modifyProvider" href="${pageContext.request.contextPath}/provider/providerModify?id=${provider.id}"><img src="${pageContext.request.contextPath }/images/xiugai.png" alt="修改" title="修改"/></a></span>
               </td>
           </tr>
       </c:forEach>
   </table>
<input type="hidden" id="totalPageCount" value="${totalPageCount}"/>
<c:import url="rollpage.jsp">
   <c:param name="totalCount" value="${totalCount}"/>
   <c:param name="currentPageNo" value="${currentPageNo}"/>
   <c:param name="totalPageCount" value="${totalPageCount}"/>
</c:import>
</div>

后端代码

其他servelt继承BaseServelt,使代码统一存放

public class BaseServlet extends HttpServlet {
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // 1. 拿到字节码对象
       Class<? extends BaseServlet> cls = this.getClass();
       // 2. 需要知道用户想调用什么方法
       String path = req.getRequestURI();
       String method = path.substring(path.lastIndexOf("/") + 1);
       try {
           Method m = cls.getDeclaredMethod(method, HttpServletRequest.class, HttpServletResponse.class);
           m.invoke(this, req, resp);
      } catch (Exception e) {
           e.printStackTrace();
      }
  }
}

从前端传入ProviderServelt

@WebServlet("/provider/*")
public class ProviderServlet extends BaseServlet {
   private ProviderService service = new ProviderService();
   /**当前页数*/
   private Integer currentPageNo = 1;
   private Integer pageSize = 8;

   public void providerList(HttpServletRequest req, HttpServletResponse resq) throws IOException, ServletException {
       List<Provider> list = service.getProviders();
       //每页可容纳数据数量
       List<Provider> listThis = service.getProviders(currentPageNo, pageSize);
       req.getSession().setAttribute("SERVLET_NOW","provider");
       req.getSession().setAttribute("PROVIDER_LIST", listThis);
       req.getSession().setAttribute("currentPageNo", currentPageNo);
       req.getSession().setAttribute("totalCount", list.size());
       if (list.size()!=0){
           req.getSession().setAttribute("totalPageCount", ((list.size()-1)/ pageSize)+1);
      }else {
           req.getSession().setAttribute("totalPageCount", 0 );
      }
       req.setAttribute("KEY_WORD", null);
//       resq.sendRedirect(req.getContextPath()+"/jsp/providerlist.jsp");
       req.getRequestDispatcher("/jsp/providerlist.jsp").forward(req, resq);
  }

   public void providerSearch(HttpServletRequest req, HttpServletResponse resq) throws ServletException, IOException {
       String queryProCode = req.getParameter("queryProCode");
       String queryProName = req.getParameter("queryProName");
       Provider p = new Provider();
       p.setProCode(queryProCode);
       p.setProName(queryProName);
       List<Provider> list = service.search(queryProCode, queryProName);
       req.getSession().setAttribute("PROVIDER_LIST", list);
//       req.getSession().setAttribute("param.totalCount",list.size());
       req.setAttribute("KEY_WORD", p);
//       req.getRequestDispatcher("/jsp/providerlist.jsp").forward(req, resq);
       resq.sendRedirect(req.getContextPath() + "/jsp/providerlist.jsp");
  }

   public void providerSave(HttpServletRequest req, HttpServletResponse resp) throws InvocationTargetException, IllegalAccessException, ServletException, IOException {
       req.setCharacterEncoding("utf-8");
       String proCode = req.getParameter("proCode");
       String proName = req.getParameter("proName");
       String proContact = req.getParameter("proContact");
       String proPhone = req.getParameter("proPhone");
       String proAddress = req.getParameter("proAddress");
       String proFax = req.getParameter("proFax");
       String proDesc = req.getParameter("proDesc");
       Provider provider = new Provider(proCode, proName, proContact, proPhone, proAddress, proFax, proDesc);
       if (!service.save(provider)) {
           req.getRequestDispatcher("/jsp/error.jsp").forward(req, resp);
      }
//       req.getRequestDispatcher("/provider/providerList").forward(req,resp);
       resp.sendRedirect("providerList");
  }

   public void providerView(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
       Integer id = Integer.valueOf(req.getParameter("id"));
       Provider provider = service.get(id);
       if (!Objects.nonNull(provider)) {
           req.getRequestDispatcher("/jsp/error.jsp").forward(req, resp);
      }
       req.getSession().setAttribute("PROVIDER_ONE", provider);
//       resp.sendRedirect(req.getContextPath()+"/jsp/providerview.jsp");
       req.getRequestDispatcher("/jsp/providerview.jsp").forward(req, resp);
  }

   public void providerModify(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
       req.setCharacterEncoding("utf-8");
       Integer id = Integer.valueOf(req.getParameter("id"));
       Provider provider = service.get(id);
       System.out.println(provider);
       if (!Objects.nonNull(provider)) {
           req.getRequestDispatcher("/jsp/error.jsp").forward(req, resp);
      }
       req.getSession().setAttribute("PROVIDER_EDIT", provider);
       resp.sendRedirect(req.getContextPath() + "/jsp/providermodify.jsp");
  }

   public void providerEdit(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
       req.setCharacterEncoding("utf-8");
       Provider provider = (Provider) req.getSession().getAttribute("PROVIDER_EDIT");
       Integer id = provider.getId();
       String proCode = req.getParameter("proCode");
       String proName = req.getParameter("proName");
       String proContact = req.getParameter("proContact");
       String proPhone = req.getParameter("proPhone");
       String proAddress = req.getParameter("proAddress");
       String proFax = req.getParameter("proFax");
       String proDesc = req.getParameter("proDesc");
       Provider pro = new Provider(proCode, proName, proContact, proPhone, proAddress, proFax, proDesc);
       if (!service.modify(id, pro)) {
           resp.sendRedirect(req.getContextPath() + "/jsp/error.jsp");
      }
//       req.getRequestDispatcher("/provider/providerList").forward(req,resp);
       resp.sendRedirect("providerList");
  }

   public void providerDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       Integer id = Integer.valueOf(req.getParameter("id"));
       service.remove(id);
//       req.getRequestDispatcher("providerList").forward(req,resp);
       resp.sendRedirect("provider/providerList");
  }

   public void pageJumpTo(HttpServletRequest req, HttpServletResponse resp) throws IOException {
       currentPageNo = Integer.valueOf(req.getParameter("inputPage"));
       resp.sendRedirect("providerList");
  }

   public void pageFirst(HttpServletRequest req, HttpServletResponse resp) throws IOException{
       currentPageNo = 1;
       resp.sendRedirect("providerList");
  }

   public void pageBefore(HttpServletRequest req, HttpServletResponse resp) throws IOException{
       if (this.currentPageNo>1){
           this.currentPageNo -= 1;
      }else {
           currentPageNo = 1;
      }
       resp.sendRedirect("providerList");
  }

   public void pageNext(HttpServletRequest req, HttpServletResponse resp) throws IOException {
       Integer totalPageCount = (Integer) req.getSession().getAttribute("totalPageCount");
       if (totalPageCount > currentPageNo){
           currentPageNo += 1;
      }else {
           currentPageNo = totalPageCount;
      }
       resp.sendRedirect("providerList");
  }

   public void pageFinal(HttpServletRequest req, HttpServletResponse resp) throws IOException{
       currentPageNo = (Integer) req.getSession().getAttribute("totalPageCount");
       resp.sendRedirect("providerList");
  }
}

ProviderService

public class ProviderService {
   private ProviderDao dao = new ProviderDao();

   public List<Provider> getProviders() {
       return dao.queryAll();
  }

   public List<Provider> getProviders(Integer currentPageNo,Integer pageSize) {
       return dao.queryLimit(currentPageNo,pageSize);
  }

   public boolean save(Provider provider) {
       return dao.addOne(provider);
  }

   public Provider get(Integer id) {
       List<Provider> pros = dao.queryById(id);
       if (Objects.nonNull(pros) && pros.size() > 0) {
           return pros.get(0);
      }
       return null;
  }

   public void remove(Integer id) {
       dao.deleteById(id);
  }

   public boolean modify(Integer id, Provider pro) {
       return dao.update(id, pro);
  }

   public List<Provider> search(String proCode, String proName) {
       if (Objects.equals(proCode, "")) {
           return dao.queryLikeName(proName);
      } else if (Objects.equals(proName, "")) {
           return dao.queryLikeCode(proCode);
      } else {
           return dao.queryLike(proCode, proName);
      }
  }
}

dao层代码,主要就是连接数据库

public class ProviderDao {
   public List<Provider> queryAll() {
       return DSUtil.query("select * from provider", Provider.class);
  }

   public boolean addOne(Provider provider) {
       return DSUtil.execute("insert into provider values(null,?,?,?,?,?,?,?,?)", provider.getProCode(), provider.getProName(),
               provider.getProContact(), provider.getProPhone(), provider.getProAddress(),
               provider.getProFax(), provider.getProDesc(), provider.getCreationDate()) > 0;
  }

   public List<Provider> queryById(Integer id) {
       return DSUtil.query("select * from provider where id = ?", Provider.class, id);
  }

   public void deleteById(Integer id) {
       DSUtil.execute("delete from provider where id = ?", id);
  }

   public boolean update(Integer id, Provider pro) {
       return DSUtil.execute("update provider set proCode = ?,proName = ?,proContact= ? ,proPhone = ? , proAddress = ? , " +
                       "proFax = ?, proDesc = ? where id = ?", pro.getProCode(), pro.getProName(), pro.getProContact(), pro.getProPhone(),
               pro.getProAddress(), pro.getProFax(), pro.getProDesc(), id) > 0;
  }

   public List<Provider> queryLikeCode(String proCode) {
       proCode = "%" + proCode + "%";
       return DSUtil.query("select * from provider where proCode like ?", Provider.class, proCode);
  }

   public List<Provider> queryLikeName(String proName) {
       proName = "%" + proName + "%";
       return DSUtil.query("select * from provider where proName like ?", Provider.class, proName);
  }

   public List<Provider> queryLike(String proCode, String proName) {
       proCode = "%" + proCode + "%";
       proName = "%" + proName + "%";
       return DSUtil.query("select * from provider where proCode like ? and proName like ? ", Provider.class, proCode, proName);
  }

   public List<Provider> queryLimit(Integer currentPageNo, Integer pageSize) {
       return DSUtil.query("select * from provider limit ?,?", Provider.class, (currentPageNo - 1) * pageSize, pageSize);
  }
}

pojo,只要控制跟数据库一样就行

public class Provider {
   private Integer id;
   private String proCode;
   private String proName;
   private String proContact;
   private String proPhone;
   private String proAddress;
   private String proFax;
   private String proDesc;
   private Date creationDate = new Date();

   public Provider() {
  }

   public Provider(String proCode, String proName, String proContact, String proPhone, String proAddress, String proFax, String proDesc) {
       this.proCode = proCode;
       this.proName = proName;
       this.proContact = proContact;
       this.proPhone = proPhone;
       this.proAddress = proAddress;
       this.proFax = proFax;
       this.proDesc = proDesc;
  }

   public Integer getId() {
       return id;
  }

   public void setId(Integer id) {
       this.id = id;
  }

   public String getProCode() {
       return proCode;
  }

   public void setProCode(String proCode) {
       this.proCode = proCode;
  }

   public String getProName() {
       return proName;
  }

   public void setProName(String proName) {
       this.proName = proName;
  }

   public String getProContact() {
       return proContact;
  }

   public void setProContact(String proContact) {
       this.proContact = proContact;
  }

   public String getProPhone() {
       return proPhone;
  }

   public void setProPhone(String proPhone) {
       this.proPhone = proPhone;
  }

   public String getProAddress() {
       return proAddress;
  }

   public void setProAddress(String proAddress) {
       this.proAddress = proAddress;
  }

   public String getProFax() {
       return proFax;
  }

   public void setProFax(String proFax) {
       this.proFax = proFax;
  }

   public String getProDesc() {
       return proDesc;
  }

   public void setProDesc(String proDesc) {
       this.proDesc = proDesc;
  }

   public Date getCreationDate() {
       return creationDate;
  }

   public void setCreationDate(Date creationDate) {
       this.creationDate = creationDate;
  }

   @Override
   public String toString() {
       return "Provider{" +
               "id=" + id +
               ", proCode='" + proCode + '\'' +
               ", proName='" + proName + '\'' +
               ", proContact='" + proContact + '\'' +
               ", proPhone='" + proPhone + '\'' +
               ", proAddress='" + proAddress + '\'' +
               ", proFax='" + proFax + '\'' +
               ", proDesc='" + proDesc + '\'' +
               ", creationDate=" + creationDate +
               '}';
  }
}

附上过滤器

public class LoginFilter implements Filter{
   @Override
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
       HttpServletRequest req = ((HttpServletRequest)servletRequest);
       HttpServletResponse resp = ((HttpServletResponse)servletResponse);
//       filterChain.doFilter(servletRequest,servletResponse);
//       System.out.println(req.getServletPath());
//       System.out.println("----------");
       String name = (String) req.getSession().getAttribute("LOGIN_NAME");

       if ("/login.jsp".equals(req.getServletPath()) || "/randomCode".equals(req.getServletPath()) ||
               "/login".equals(req.getServletPath()) || req.getRequestURL().toString().contains("/css") ||
               req.getRequestURL().toString().contains("/images") ||
               req.getRequestURL().toString().contains("/js11")|| req.getRequestURL().toString().contains("/calendar")){
           filterChain.doFilter(servletRequest,servletResponse);
      }else {
           if (Objects.nonNull(name)){
               filterChain.doFilter(servletRequest,servletResponse);
          }else {
               resp.sendRedirect(req.getContextPath()+"/login.jsp");
          }
      }
  }
}

还没用到框架,所以用的自己封装的工具类DSUtils

public class DSUtil {
   private static DataSource ds = null;

   static {
       Properties p = new Properties();
       try {
           p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
           ds = BasicDataSourceFactory.createDataSource(p);
      } catch (Exception e) {
           e.printStackTrace();
      }
  }

   public static Connection getConn() {
       try {
           return ds.getConnection();
      } catch (Exception throwables) {
           throwables.printStackTrace();
      }
       return null;
  }

   public static void close(Statement st, Connection conn) {
       try {
           if (st != null) {
               st.close();
          }
      } catch (SQLException throwables) {
           throwables.printStackTrace();
      } finally {
           try {
               if (conn != null) {
                   conn.close();
              }
          } catch (SQLException throwables) {
               throwables.printStackTrace();
          }
      }
  }

   public static void close(PreparedStatement ps, Connection conn) {
       try {
           if (ps != null) {
               ps.close();
          }
      } catch (SQLException throwables) {
           throwables.printStackTrace();
      } finally {
           try {
               if (conn != null) {
                   conn.close();
              }
          } catch (SQLException throwables) {
               throwables.printStackTrace();
          }
      }
  }

   public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
       try {
           if (rs != null) {
               rs.close();
          }
      } catch (SQLException throwables) {
           throwables.printStackTrace();
      } finally {
           try {
               if (ps != null) {
                   ps.close();
              }
          } catch (SQLException throwables) {
               throwables.printStackTrace();
          } finally {
               try {
                   if (conn != null) {
                       conn.close();
                  }
              } catch (SQLException throwables) {
                   throwables.printStackTrace();
              }
          }
      }
  }

   /**
    * 增删改工具类抽取
    *
    * @param sql
    * @param args
    * @return
    */
   public static int execute(String sql, Object... args) {
       Connection conn = null;
       PreparedStatement ps = null;
       try {
           // 1. 加载驱动
           // 2. 获取连接对象
           conn = DSUtil.getConn();
           // 3. 获取执行sql语句对象
           ps = conn.prepareStatement(sql);
           for (int i = 1; i <= args.length; i++) {
               ps.setObject(i, args[i - 1]);
          }
           // 4. 执行sql语句
           return ps.executeUpdate();
      } catch (Exception e) {
           e.printStackTrace();
      } finally {
           // 5. 释放资源 先开后关
           DSUtil.close(ps, conn);
      }
       return 0;
  }

   /**
    *
    * @param sql
    *     sql语句
    * @param clazz
    *     类反射对象
    * @param args
    *     sql语句占位符中的参数
    * @param <T>
    *     泛型
    * @return
    *     泛型对应的list集合
    */
   public static <T> List<T> query(String sql, Class<T> clazz, Object... args) {
       Connection conn = null;
       PreparedStatement ps = null;
       ResultSet rs = null;
       List<T> list = new ArrayList<>();
       try {
           conn = DSUtil.getConn();
           ps = conn.prepareStatement(sql);
           for (int i = 1; i <= args.length; i++) {
               ps.setObject(i, args[i - 1]);
          }
           rs = ps.executeQuery();
           while (rs.next()) {
               T t = clazz.newInstance();
               HashMap<String, Object> hm = new HashMap<>();
               ResultSetMetaData rsm = rs.getMetaData();
               for (int i = 1; i <= rsm.getColumnCount(); i++) {
                   hm.put(rsm.getColumnLabel(i), rs.getObject(rsm.getColumnLabel(i)));
              }
               BeanUtils.populate(t, hm);
               list.add(t);
          }
           return list;
      } catch (Exception e) {
           e.printStackTrace();
      } finally {
           DSUtil.close(rs, ps, conn);
      }
       return list;
  }
}

 

posted @   Black空我  阅读(241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示