SpringMVC(18):使用springmvc+spring+jdbc 优化订单管理系统的示例(供应商新增的功能实现)

网友投稿 811 2022-10-15

SpringMVC(18):使用springmvc+spring+jdbc 优化订单管理系统的示例(供应商新增的功能实现)

SpringMVC(18):使用springmvc+spring+jdbc 优化订单管理系统的示例(供应商新增的功能实现)

2018年1月28日

【0】功能要求

【1】jar包/文件架构

jar包:

图1

文件结构:

图2

【2】View层

在sys.jsp添加以下代码:

页面效果:

新建provideradd.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="fm" uri="%>Insert title here

provideradd:请在下面填写需要添加的供应商信息:

供应商编码 1:
供应商名称2 :
联系人3:
供应商地址4 :
供应商电话5 :
传真6:
描述7 :
上传文件1-营业执照8:
上传文件2-组织机构代码照9:

页面效果:

图3

【3】Controller层:

在ProviderController.java作以下修改:

package com.Provider.Controller;import java.io.File;import java.sql.SQLException;import java.util.List;import javax.servlet.javax.servlet.org.apache.commons.io.FilenameUtils;import org.apache.commons.lang.math.RandomUtils;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartResolver;import com.Provider.Service.ProviderService;import com.Provider.entities.Provider;import com.User.Controller.UserController;import com.User.entities.User;@Controller@RequestMapping("/usera")public class ProviderController { private Logger log = Logger.getLogger(UserController.class.getName()); @Autowired private ProviderService providerService; @RequestMapping("/providerlist.html") public String getProviderList(Model model, @RequestParam(name="queryProviderCode",required=false)String queryProviderCode, @RequestParam(name="queryProviderName",required=false)String queryProviderName) throws SQLException{ log.info("getUserList ====> queryUserName: "+queryProviderCode); log.info("getUserList ====> queryUserRole: "+queryProviderName); List providerlist = null; if(queryProviderCode == null){ queryProviderCode = ""; } if(queryProviderName == null){ queryProviderName = ""; } providerlist = providerService.getProviderList(queryProviderCode,queryProviderName); model.addAttribute("prolist",providerlist); return "providerlist"; } @RequestMapping(value="/provideradd",method=RequestMethod.GET) public String add(@ModelAttribute Provider provider){ System.out.println("ProviderController-add"); return "provideradd"; } @RequestMapping(value="/providersave",method=RequestMethod.POST) public String save(Provider provider,Model model, HttpServletRequest request,HttpSession session, @RequestParam(value="uploadFiles",required=false)MultipartFile[] uploadFiles) throws SQLException{ System.out.println("ProviderController-save"); String errorInfo = null; String pic_OrgCodeCer = null; String pic_BusinessLic = null; boolean flag = true; //获取保存文件的绝对路径 String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfilesProvider"); System.out.println("2.1 uploadFile path ===>"+path); for(int i=0;i filesize){ request.setAttribute("uploadFileError", "* 上传大小不得超过5000KB"); System.out.println("* 上传大小不得超过5000KB"); flag = false; System.out.println("文件大小-flag: "+flag); return "useradd"; }else if(prefix.equalsIgnoreCase("jpg") || prefix.equalsIgnoreCase("png") || prefix.equalsIgnoreCase("jpeg") || prefix.equalsIgnoreCase("pneg")){ //上传格式正确,重命名文件 String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"_Personal.jpg"; System.out.println("2.2 new fileName===>"+uploadFile.getName()); //新建这么一个文件,FILE API File targetFile = new File(path,fileName); if(!targetFile.exists()){ targetFile.mkdirs(); } System.out.println("格式-flag: "+flag); //保存 try{ //上传 uploadFile.transferTo(targetFile); }catch (Exception e){ e.printStackTrace(); request.setAttribute("uploadFileError", "* 上传失败! "); System.out.println("* 上传失败! "); flag = false; System.out.println("上传-flag: "+flag); return "useradd"; } if(i==0){ pic_OrgCodeCer = path+File.separator+fileName; log.info("2.3 pic_OrgCodeCer ==>"+pic_OrgCodeCer ); }else if(i==1){ pic_BusinessLic = path+File.separator+fileName; log.info("2.4 pic_BusinessLic==>"+pic_BusinessLic); } }else{ request.setAttribute("uploadFileError", "* 上传格式错误!"); System.out.println("* 上传格式错误!"); flag = false; return "useradd"; } } } System.out.println("flag:"+flag); if(flag){ System.out.println("new provider info1: "+provider); provider.setPic_BusinessLic(pic_BusinessLic); provider.setPic_OrgCodeCer(pic_OrgCodeCer); provider.setCreateBy(((User)session.getAttribute("currentUser")).getId()); System.out.println("new provider info2: "+provider); providerService.save(provider); return "redirect:/usera/providerlist.html"; } return "provideradd"; }}

解释:(1)上面定义了几个处理器方法:显示,添加和保存;

(2)多文件上传,使用数组:equestParam(value="uploadFiles",required=false)MultipartFile[] uploadFiles;

(3)session保存了登陆者的信息,因此可以保存setCreateBy;

【4】Service层接口与实现类:

ProviderService.java:

package com.Provider.Service;import java.sql.SQLException;import java.util.List;import com.Provider.entities.Provider;public interface ProviderService { public List getProviderList(String queryProviderCode,String queryProviderName) throws SQLException; public boolean save(Provider provider) throws SQLException;}

ProviderServiceImpl.java:

package com.Provider.Service;import java.sql.SQLException;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.Provider.Dao.ProviderDao;import com.Provider.entities.Provider;@Service("providerService")public class ProviderServiceImpl implements ProviderService { @Autowired ProviderDao providerDao; @Override public List getProviderList(String queryProviderCode, String queryProviderName) throws SQLException { return providerDao.getProviderList(queryProviderCode,queryProviderName); } @Override public boolean save(Provider provider) throws SQLException { boolean result = false; if(providerDao.save(provider) == 1){ result = true; } return result; }}

【5】Dao层接口与实现类:

ProviderDao.java:

package com.Provider.Dao;import java.sql.SQLException;import java.util.List;import com.Provider.entities.Provider;public interface ProviderDao { List getProviderList(String queryProviderCode, String queryProviderName) throws SQLException; public int save(Provider provider) throws SQLException;}

ProviderDaoImpl.java:(使用的是jdbc的操作)

package com.Provider.Dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.log4j.Logger;import org.springframework.stereotype.Component;import com.Provider.entities.Provider;import com.User.Controller.UserController;@Component("providerDao")public class ProviderDaoImpl implements ProviderDao { private Connection conn = null; private Statement stmt = null; private ResultSet rs = null; private String sql; @Override public List getProviderList(String queryProviderCode, String queryProviderName) throws SQLException { List providerlist = new ArrayList(); sql = "select proCode,proName,proContact ,proPhone,proFax ,creatiomDate " + " from smbms_provider " + " where proCode like CONCAT('%','"+queryProviderCode+"','%')" + " and proName like CONCAT('%','"+queryProviderName+"','%');" ; System.out.println("providerdao执行的sql: "+sql); String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = ""; try { Class.forName(driver); conn = DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { e.printStackTrace(); } stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ Provider pro= new Provider(); pro.setProCode(rs.getString("proCode")); pro.setProName(rs.getString("proName")); pro.setProContact(rs.getString("proContact")); pro.setProPhone(rs.getString("proPhone")); pro.setProFax(rs.getString("proFax")); pro.setCreationDate(rs.getDate("creatiomDate")); providerlist.add(pro); } if(stmt!=null){ stmt.close(); } if(rs!=null){ rs.close(); } return providerlist; } @Override public int save(Provider provider) throws SQLException { Logger log = Logger.getLogger(UserController.class.getName()); int count = 0; SimpleDateFormat createDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); provider.setCreationDate(new Date()); String createDate = createDateFormat.format(provider.getCreationDate()); System.out.println("ProviderDao-add"); //第二种方法 sql = "insert into smbms_provider " + "(proCode,proName,proAddress,proFax,proDesc," + "proContact,createdBy,creatiomDate," + "pic_BusinessLic,pic_OrgCodeCer) " + "values" + "('" +provider.getProCode()+"','" +provider.getProName()+"','" +provider.getProAddress()+"','" +provider.getProFax()+"','" +provider.getProDesc()+"','" +provider.getProContact()+"'," +provider.getCreateBy()+",'" +createDate+"','" +provider.getPic_BusinessLic()+"','" +provider.getPic_OrgCodeCer()+"'" +")"; String sql2 = " SELECT ROW_COUNT();"; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = ""; try { Class.forName(driver); conn = DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { e.printStackTrace(); } stmt = conn.createStatement(); System.out.println("add - sql1: "+sql); stmt.execute(sql); System.out.println("add_result_row - sql: "+sql2); rs = stmt.executeQuery(sql2); rs.next(); count = rs.getInt(1); if(stmt!=null){ stmt.close(); } if(rs!=null){ rs.close(); } return count; } }

【6】供应商显示结果页面

新建providerlist.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="prefix="c"%> Insert title here

这是providerlist,负责展示供应商信息!


【7】配置文件

spring配置文件(/resources/applicationContext-jdbc.xml):

springmvc配置文件(/resources/springmvc-servlet.xml):

login

web.xml配置文件:

log4jConfigLocation classpath:log4j.properties org.springframework.web.util.Log4jConfigListener springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc / springUtf8Encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true springUtf8Encoding /* /WEB-INF/jsp/login.jsp contextConfigLocation classpath:applicationContext-*.xml org.springframework.web.context.ContextLoaderListener

【8】测试结果:

测试输入:

图4

打印日志:

ProviderController-addProviderController-save2.1 uploadFile path ===>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider开始-flag: true文件数量-flag: true2.2 new fileName===>uploadFiles格式-flag: true18/02/04 00:06:37 INFO Controller.UserController: 2.3 pic_OrgCodeCer ==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674966575_Personal.jpg开始-flag: true文件数量-flag: true2.2 new fileName===>uploadFiles格式-flag: true18/02/04 00:06:37 INFO Controller.UserController: 2.4 pic_BusinessLic==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674764202_Personal.jpgflag:truenew provider info1: Provider [id=null, proCode=003, proName=shunfeng, proDesc=KuaiDi, proContact=no3, proPhone=88888888, proFax=0213-13, createBy=null, creationDate=null, modifyDate=null, modifyBy=null, pic_BusinessLic=null, pic_OrgCodeCer=null, proAddress=]new provider info2: Provider [id=null, proCode=003, proName=shunfeng, proDesc=KuaiDi, proContact=no3, proPhone=88888888, proFax=0213-13, createBy=4, creationDate=null, modifyDate=null, modifyBy=null, pic_BusinessLic=D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674764202_Personal.jpg, pic_OrgCodeCer=D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674966575_Personal.jpg, proAddress=]ProviderDao-addadd - sql1: insert into smbms_provider (proCode,proName,proAddress,proFax,proDesc,proContact,createdBy,creatiomDate,pic_BusinessLic,pic_OrgCodeCer) values('003','shunfeng','','0213-13','KuaiDi','no3',4,'2018-02-04 00:06:37','D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674764202_Personal.jpg','D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesProvider\1517674966575_Personal.jpg')add_result_row - sql: SELECT ROW_COUNT();

输出结果:

图5

图6

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Netty分布式高性能工具类FastThreadLocal和Recycler分析
下一篇:volts.dev- Golang WEB+RPC 框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~