SpringMVC(19):使用springmvc+spring+jdbc 优化订单管理系统的示例(根据ID修改用户信息的功能实现)

springmvc框架------增删改查 在如下图所示创建一个UserMapper.xml映射文件。 阅读详情

2018年1月28日

【0】功能要求

用户修改与保存功能:(1)登陆成功后(login.jsp),sys.jsp 系统页面会有链接---“用户修改”,点击跳转到补全用户修改信息( userModifySave.jsp),若是添加成功则会保存至数据库,并跳转用户显示(userlist.jsp),否则继续返回系统页面(sys.jsp);(2)用户修改信息包括常用数据和文件上传;


【1】jar包/文件架构

jar包:


图1

文件结构:


图2


【2】View层

1.在sys.jsp添加以下代码:

	<h4>------------------点击下面的链接进行用户信息修改:---------</h4>
	<br>
	<a href="${pageContext.request.contextPath}/user/userModify.html">跳转到用户信息修改.</a>	
	<br/>


显示效果:

图3

2.新建/jsp/userModifySave.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h5>这是userModifySave页面!</h5>
		  <form action="${pageContext.request.contextPath }/user/userModifySave.html" method="post" enctype="multipart/form-data">
	          需要修改信息的用户ID:<input type="text" name="id" value=""><br>
	          用户编码 :<input type="text" name="userCode" value=""/><br>
	          用户名称 :<input type="text" name="userName" value=""/><br>
		用户密码 :<input type="text" name="userPassword" value=""/><br>
		用户地址 :<input type="text" name="address" value=""/>	<br>
		用户电话 : <input type="text" name="phone" value=""/><br>
		用户生日 :<input type="text" name="birthday" value=""/><br>
		用户性别: <select name="gender" id="gender">
					  <option value="1">女</option>
					  <option value="2" selected="selected">男</option>
				</select><br>
		用户角色 :<select name="userRole" id="userRole">
				  <option value="100" selected="selected">tour</option>
				  <option value="101">OrdinaryUser</option>
				  <option value="110">Administrator</option>
				  <option value="111">Manager</option>
				</select><br>
	      <div>
		      <input type="hidden" id="errorinfo" value="${uploadFileError}">         
		                文件1:<input type="file" name="uploadModifyFiles"/><br/><br/>
	      </div>
	      <div>
		      <input type="hidden" id="errorinfo" value="${uploadFileError}">
		                文件2:<input type="file" name="uploadModifyFiles"/><br/><br/>	      
	      </div>
	      <input type="submit" value="上传"/>
	      <input type="reset" value="重置"/>
   </form>   	
	
	
</body>
</html>


显示效果:
图4


【3】控制器方法:

1.UserController.java添加处理方法:

	
	@RequestMapping(value="/userModify.html",method=RequestMethod.GET)
	public String modifyUser(@ModelAttribute("userModify") User userModify,HttpSession session){
		System.out.println("UserController-modifyUser");
		return "userModifySave";
	}
	
	@RequestMapping(value="/userModifySave.html",method=RequestMethod.POST)
	public String modifyUserSave(User userModify,HttpSession session,
			HttpServletRequest request,
			@RequestParam(value="uploadModifyFiles",required=false)MultipartFile[] uploadModifyFiles) throws SQLException{
		System.out.println("UserController-modifyUserSave");
		System.out.println("userModify: "+userModify.toString());
		String errorInfo = null;
		String idPicPath = null;
		String workPicPath = null;
		boolean flag = true;
		//获取保存文件的绝对路径
		String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfilesUser");
		System.out.println("2.1 uploadFile path ===>"+path);
		
		for(int i=0;i<uploadModifyFiles.length;i++){
			MultipartFile uploadFile = uploadModifyFiles[i];
			System.out.println("开始-flag: "+flag);
			if(!uploadFile.isEmpty()){
				if(i==0){
					errorInfo = "uploadFileError!";
				}else if(i==1){
					errorInfo = "uploadWpError!";
				}
				System.out.println("文件数量-flag: "+flag);
				String oldFileName = uploadFile.getOriginalFilename();
				String prefix = FilenameUtils.getExtension(oldFileName);
				int filesize = 500000;
				if(uploadFile.getSize() > 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){
						idPicPath = path+File.separator+fileName;
						log.info("2.3 idPicPath==>"+idPicPath);
					}else if(i==1){
						workPicPath = path+File.separator+fileName;
						log.info("2.4 workPicPath==>"+workPicPath);
					}
					
				}else{
					request.setAttribute("uploadFileError", "* 上传格式错误!");
					System.out.println("* 上传格式错误!");
					flag = false;
					return "useradd";
				}
			}
		}
		System.out.println("flag:"+flag);
		if(flag){
			userModify.setIdPicPath(idPicPath);
			userModify.setWorkPicPath(workPicPath);
			System.out.println(" userModify.idPicPath: "+ userModify.getIdPicPath());
			System.out.println(" userModify.workPicPath: "+ userModify.getWorkPicPath());
			userModify.setCreatedBy(((User)session.getAttribute("currentUser")).getId());
			System.out.println("userModify is: "+userModify.toString());
			if(userService.modify(userModify)){
				System.out.println("2.5 modify user success..");
				return "redirect:/user/userlist";
			}
		}
		return "sys";
	} 

解释:1、添加了“userModify”进Model,用于保存需要修改的信息;


【4】Service层

1. /Service/UserService.java 接口添加modify()方法:

public interface UserService {
	public boolean modify(User userModify) throws SQLException;
}

2. UserServiceImpl.java实现类:

package com.User.Service;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.User.Dao.UserDao;
import com.User.entities.User;

@Service("userService")
public class UserServiceImpl implements UserService {
	@Autowired
	private UserDao userDao ;
	@Override
	public boolean modify(User userModify) throws SQLException {
		System.out.println("UserServiceImpl-modify");
		boolean result = false; 
		if(userDao.modify(userModify) == 1){
			result = true;
		}
		return result;
	}
	
}

【5】Dao层

1. /Dao/UserDao.java接口添加modify()方法:

package com.User.Dao;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import com.User.entities.User;

public interface UserDao {
	public int modify(User userModify) throws SQLException;
}

2. UserDaoImpl.java:

package com.User.Dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
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.User.Controller.UserController;
import com.User.entities.User;
import com.mysql.jdbc.PreparedStatement;

@Component("userDao")
public class UserDaoImpl implements UserDao {
	private Connection conn = null;
	private Statement stmt = null;
	private PreparedStatement p_stmt = null;
	private ResultSet rs = null;
	private String sql;
	
	@Override
	public int modify(User userModify) throws SQLException {
		System.out.println("UserDaoImpl-add");
		Logger log = Logger.getLogger(UserController.class.getName());
		SimpleDateFormat birthdayFormat = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat createDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String birthday = birthdayFormat.format(userModify.getBirthday());
		userModify.setModifyDate(new Date());
		String modifyDate = createDateFormat.format(userModify.getModifyDate());
		int count = 0;
		//第二种方法  	
		sql = "update smbms_user SET "
				+"userCode='"+userModify.getUserCode()+"',"
				+"userName='"+userModify.getUserName()+"',"
				+"userRole="+userModify.getUserRole()+","
				+"userPassword='"+userModify.getUserPassword()+"',"
				+"gender="+userModify.getGender()+","
				+"birthday='"+birthday+"',"
				+"phone='"+userModify.getPhone()+"',"
				+"address='"+userModify.getAddress()+"',"
				+"modifyBy="+userModify.getModifyBy()+","
				+"modifyDate='"+modifyDate+"',"	
				+"idPicPath='"+userModify.getIdPicPath()+"',"
				+"workPicPath='"+userModify.getWorkPicPath()+"' "
				+"where id="+ userModify.getId()+";";
		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);
		System.out.println("count: "+count);
		if(stmt!=null){
			stmt.close();
		}
		if(rs!=null){
			rs.close();
		}
		return count;
	}

}

【6】配置文件:

1. spring配置文件 -- applicationContext-jdbc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:context="http://www.springframework.org/schema/context"
 	xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/context 
        	http://www.springframework.org/schema/context/spring-context-4.0.xsd
        	http://www.springframework.org/schema/aop
        	http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        ">
	<context:component-scan base-package="com.User.Dao"></context:component-scan>
	<context:component-scan base-package="com.User.Service"></context:component-scan>
	<context:component-scan base-package="com.Role.Dao"></context:component-scan>
	<context:component-scan base-package="com.Role.Service"></context:component-scan>
	<context:component-scan base-package="com.Provider.Dao"></context:component-scan>
	<context:component-scan base-package="com.Provider.Service"></context:component-scan>
</beans>

2. springmvc配置文件 -- /springmvc-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<beans  xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd  
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
     <!--mvc静态资源访问   -->
	 <mvc:resources mapping="/statics/**" location="/statics/"/>
	
   	<!-- 一键式配置 -->
    <context:component-scan base-package="com.User.Controller"></context:component-scan>
    <context:component-scan base-package="com.Provider.Controller"></context:component-scan>  
    <context:component-scan base-package="com.User"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>  
  
    <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->  
    <!--prefix 前缀+suffix 后缀  -->  
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="prefix" value="/WEB-INF/jsp/"></property>  
        <property name="suffix" value=".jsp"></property>  
    </bean>         
  	
  	<!-- 全局异常处理 -->
  	<!--  -->
  	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  		<property name="exceptionMappings">
  			<props>
  				<prop key="java.lang.RuntimeException">login</prop>
  			</props>
  		</property>
  	</bean>
  	
  	<!-- 配置MultipartResolver -->
  	<bean id="multipartResolver" 
  	  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  	 	<property name="maxUploadSize" value="5000000"></property>
  	 	<property name="defaultEncoding" value="UTF-8"></property> 
  	 </bean>
  	 
</beans> 

3. web.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns="http://java.sun.com/xml/ns/javaee"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
    id="WebApp_ID" version="2.5">  
  
      <!-- 这个指定了log4j.xml放置的目录 -->
    <context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:log4j.properties</param-value> 
	</context-param>
	 <!-- 一定要加上这个listener -->
	<listener>  
	    <listener-class>  
	        org.springframework.web.util.Log4jConfigListener 
	    </listener-class>  
	</listener> 
  
    <!-- 配置 DispatcherServlet -->
    <servlet>  
        <servlet-name>springmvc</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:springmvc-servlet.xml</param-value>  
        </init-param>  
        <!--容器启动时就被加载了    -->  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>springmvc</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
       	
   	<filter>
		<filter-name>springUtf8Encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>springUtf8Encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

    <welcome-file-list>
    	<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
    </welcome-file-list>
    
    <context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath:applicationContext-*.xml</param-value>
    </context-param>
    <!-- 配置Spring的ContextLoaderListener监听器,初始化spring容器 -->
    <listener>
    	<listener-class>
    	 	org.springframework.web.context.ContextLoaderListener
    	</listener-class>
    </listener>

</web-app>  

【7】测试结果:

测试输入:


图5

日志打印:

UserServiceImpl-login
18/02/04 16:05:10 INFO Controller.UserController: UserDaoImpl.loginMatch
sql: select * from smbms_user where userName='mmb0889' and userPassword='scua';
8888
4
18/02/04 16:05:10 INFO Controller.UserController: 后台找一下有没有这个username和password: User [id=4, userCode=test01, userName=mmb0889, userPassword=scua, gender=2, birthdayString=null, birthday=1991-12-29, phone=0000, address=maoming, userRole=110, createdBy=1, creationDate=2017-12-17, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=null]
18/02/04 16:05:10 INFO Controller.UserController: user.toString(): User [id=4, userCode=test01, userName=mmb0889, userPassword=scua, gender=2, birthdayString=null, birthday=1991-12-29, phone=0000, address=maoming, userRole=110, createdBy=1, creationDate=2017-12-17, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=null]
18/02/04 16:05:10 INFO Controller.UserController: 刚刚存入了一个session对象:User [id=4, userCode=test01, userName=mmb0889, userPassword=scua, gender=2, birthdayString=null, birthday=1991-12-29, phone=0000, address=maoming, userRole=110, createdBy=1, creationDate=2017-12-17, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=null]
UserController-modifyUser
UserController-modifyUserSave
userModify: User [id=2, userCode=test07, userName=ffff, userPassword=43211234, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=jiangsu, userRole=100, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=null]
2.1 uploadFile path ===>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser
开始-flag: true
文件数量-flag: true
2.2 new fileName===>uploadModifyFiles
格式-flag: true
18/02/04 16:06:17 INFO Controller.UserController: 2.3 idPicPath==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731912464_Personal.jpg
开始-flag: true
文件数量-flag: true
2.2 new fileName===>uploadModifyFiles
格式-flag: true
18/02/04 16:06:17 INFO Controller.UserController: 2.4 workPicPath==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731675343_Personal.jpg
flag:true
 userModify.idPicPath: D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731912464_Personal.jpg
 userModify.workPicPath: D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731675343_Personal.jpg
userModify is: User [id=2, userCode=test07, userName=ffff, userPassword=43211234, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=jiangsu, userRole=100, createdBy=4, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731912464_Personal.jpg, workPicPath=D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731675343_Personal.jpg, roleName=null]
UserServiceImpl-modify
UserDaoImpl-add
add - sql1: update smbms_user SET userCode='test07',userName='ffff',userRole=100,userPassword='43211234',gender=2,birthday='1994-07-01',phone='18819467607',address='jiangsu',modifyBy=null,modifyDate='2018-02-04 16:06:17',idPicPath='D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731912464_Personal.jpg',workPicPath='D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfilesUser\1517731675343_Personal.jpg' where id=2;
add_result_row - sql:  SELECT ROW_COUNT();
count: 1
2.5 modify user success..
18/02/04 16:06:17 INFO Controller.UserController: getUserList ====> queryUserName: null
18/02/04 16:06:17 INFO Controller.UserController: getUserList ====> queryUserRole: null
18/02/04 16:06:17 INFO Controller.UserController: getUserList ====> pageIndex: null
sql: select COUNT('id') from smbms_user
userdao执行的sql: select u.userCode,u.userName,u.gender,u.birthday,u.phone,r.roleName  from smbms_user u,smbms_role r  where u.userRole=r.id;
18/02/04 16:06:17 INFO Controller.UserController: outside--result:[User [id=null, userCode=test01, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Dec 29 00:00:00 CST 1991, phone=0000, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test07, userName=ffff, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=tour], User [id=null, userCode=test01, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Dec 29 00:00:00 CST 1991, phone=0000, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test01, userName=mmb0889, userPassword=null, gender=2, birthdayString=null, birthday=Sun Dec 29 00:00:00 CST 1991, phone=0000, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test02, userName=mmb088, userPassword=null, gender=1, birthdayString=null, birthday=Tue Jan 09 00:00:00 CST 2018, phone=1212, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=tour], User [id=null, userCode=test03, userName=mmb088, userPassword=null, gender=1, birthdayString=null, birthday=Tue Jan 16 00:00:00 CST 2018, phone=21312, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Manager], User [id=null, userCode=test05, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Tue Jan 16 00:00:00 CST 2018, phone=5534, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=OrdinaryUser], User [id=null, userCode=test09, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Tue Dec 12 00:00:00 CST 2017, phone=1881645231, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=tour], User [id=null, userCode=ffff, userName=mmb0889, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=123456, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg3, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Jun 09 00:00:00 CST 2013, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=OrdinaryUser], User [id=null, userCode=szgg4, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg44, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sat Jul 09 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=ffffaaaa, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Jun 09 00:00:00 CST 2013, phone=123456, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg444, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg4444, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Jun 09 00:00:00 CST 2013, phone=123456, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg45, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg452, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test188, userName=mmb363, userPassword=null, gender=1, birthdayString=null, birthday=Sat Oct 01 00:00:00 CST 1994, phone=18819888888, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=szgg555, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Sun Jun 09 00:00:00 CST 2013, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=jjkk, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819967666, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test07, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=789456, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Manager], User [id=null, userCode=test10, userName=mmb088, userPassword=null, gender=2, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=Administrator], User [id=null, userCode=test10, userName=mmb088, userPassword=null, gender=1, birthdayString=null, birthday=Fri Jul 01 00:00:00 CST 1994, phone=18819467607, address=null, userRole=null, createdBy=null, creationDate=null, creationDateString=null, modifyBy=null, modifyDate=null, modifyDateString=null, idPicPath=null, workPicPath=null, roleName=OrdinaryUser]]
roledao执行的sql: select id,roleCode,roleName from smbms_role; 
sql: select id,roleCode,roleName from smbms_role; 

页面显示修改的结果:


图6


文件上传成功:


图7



UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧) 本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。 阅读详情

相关推荐

WinCC与PLC在西门子逻辑赛项中的通信配置避坑指南

本文针对西门子逻辑赛项中WinCC与PLC通信配置的常见问题,提供了一套实战避坑指南。重点解析了WinCC、PLC与EET仿真平台的三角通信架构,强调了IP地址规划、防火墙设置等关键环节的注意事项,并给出了系统化的故障诊断流程与排查技巧,帮助选手和技术人员快速定位并解决通信故障,确保监控系统稳定运行。

weixin_29165725的博客 107

Spring+SpringMVC练习(后台数据管理系统)

Spring练习 01-Spring练习-环境搭建步骤分析(理解) 案例环境搭建步骤: ①创建工程(Project&Module) ②导入静态页面(见jsp页面) ③导入需要坐标(见pom.xml) ④创建包结构(controller、service、dao、domain、utils(工具类)) 在不同的企业中,domain包也叫做多种名字,包括Entity包、POJO包、实质就是一个JavaBean类 ⑤导入数据库脚本(见test.sql) ⑥创建POJO(JavaBean)类(见User.jav

weixin_45394002的博客 1005

浅谈一下小波变换和EEG信号处理

浅谈小波变换,总结不是很到位,请大家指正。

qq_45045249的博客 2862

spring整合mybatis(实现数据的增删改查)

spring整合mybatis(实现数据的增删改查)

qq_53632806的博客 3184

yolov7模型部署流程

yolov7部署流程

算法的猫 1396

V93000 SmarTest 8入门:从零搭建你的第一个半导体测试程序

半导体测试是芯片从设计走向量产的关键环节,而ATE(自动化测试设备)正是支撑这一环节的核心工具。理解ATE测试程序开发的基本原理,不仅需要掌握测试机台的硬件架构,还要熟悉其软件环境中的管脚映射、电平时序、测试流程等底层逻辑。V93000作为爱德万的主力平台,其SmarTest 8环境通过对象化与流程化设计,将复杂的芯片测试任务拆解为可配置、可复用的模块,极大提升了并行测试效率与调试的便利性。无论是数字逻辑芯片的功能验证,还是模拟混合信号器件的参数测量,掌握SmarTest 8的核心操作都能帮助你快速搭建出可

weixin_31476015的博客 240

javaweb+spring+springmvc+mybatis完成数据信息的增删改查基本功能

利用javaweb、spring、springmvc以及mybatis完成简单的增删改查功能

BeJav 3232

保姆级教程:用Kvaser DB Editor从零创建你的第一个DBC文件(附CAN信号属性详解)

本文提供了一份详细的Kvaser DB Editor教程,指导用户从零开始创建DBC文件,并深入解析CAN信号属性的关键设置。通过步骤清晰的安装指南、信号属性配置详解和实用技巧,帮助工程师和学生快速掌握CAN总线通信的核心工具,提升工作效率。

weixin_27076351的博客 249

Spring综合练习 —— 基于Spring+SpringMVC的后台管理系统Demo案例

往期文章 Spring01 —— Spring概念及快速入门 Spring02 —— Spring配置文件详解和依赖注入 Spring03 —— SpringAPI和在Spring中配置数据源 Spring04 —— Spring的注解开发 Spring05 —— Spring集成Junit Spring06 —— Spring集成web环境 SpringMVC01 —— SpringMVC简介&快速入门 SpringMVC02 —— SpringMVC的各组件详解 SpringMVC03 ——

春和的博客 4569

即插即用系列(代码实践) | CVPR 2025 WPFormer:小波与原型增强Transformer——表面缺陷检测SOTA,专治弱缺陷与杂乱背景

摘要:本文提出了一种基于小波变换和原型增强的Transformer模型(WPFormer),用于像素级表面缺陷检测。该模型针对工业场景中微弱缺陷难以识别和杂乱背景干扰严重的问题,创新性地将小波变换引入Transformer的注意力机制,通过频域信息分离噪声与边缘特征,同时利用原型向量引导查询,实现了更精准的缺陷定位。核心模块包括小波增强交叉注意力(WCA)和原型引导交叉注意力(PCA),适用于工业缺陷检测、伪装目标检测和医学图像分割等任务。代码已开源,支持即插即用集成到现有框架中。

分享顶会顶刊论文即插即用模块 301

华为FusionCompute之计算虚拟化

华为FusionCompute之虚拟化

jks212454的博客 2452

SpringMVC(14):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询用户列表功能实现)

SpringMVC(14):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询用户列表功能实现)

Diligence is the mother of success. 963

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

Diligence is the mother of success. 1547

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringMVC(22):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID修改供应商明细的功能实现)

SpringMVC(22):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID修改供应商明细的功能实现)

Diligence is the mother of success. 847

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SpringMVC(24):使用springmvc+spring+jdbc 优化订单管理系统的示例(多文件上传功能的实现)

SpringMVC(23):使用springmvc+spring+jdbc 优化订单管理系统的示例(多文件上传功能的实现)

Diligence is the mother of success. 418

SpringMVC(23):使用springmvc+spring+jdbc 优化订单管理系统的示例(单文件上传功能的实现)

SpringMVC(23):使用springmvc+spring+jdbc 优化订单管理系统的示例(单文件上传功能的实现)

Diligence is the mother of success. 469

SpringMVC(21):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID查看供应商信息明细-REST的功能实现)

SpringMVC(21):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID查看供应商信息明细-REST的功能实现)

Diligence is the mother of success. 606

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

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

Diligence is the mother of success. 809

SpringMVC(20):使用springmvc+spring+jdbc 优化订单管理系统的示例(通过REST风格实现查看户信息明细的功能实现)

SpringMVC(20):使用springmvc+spring+jdbc 优化订单管理系统的示例(通过REST风格实现查看户信息明细的功能实现)

Diligence is the mother of success. 515

SSM框架实战:30分钟搞定超市订单管理系统部署(含数据库配置避坑指南)

本文详细介绍了如何使用SSM框架在30分钟内高效部署超市订单管理系统,特别针对JavaWeb开发者提供了数据库配置避坑指南和实战技巧。从环境准备、项目初始化到SSM框架核心配置,再到常见问题排查与性能优化,全面覆盖部署过程中的关键步骤,帮助开发者快速完成系统部署并提升运营效率。

weixin_30555125的博客 481

SpringMVC(16):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询供应商列表功能实现)

SpringMVC(16):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询供应商列表功能实现)

Diligence is the mother of success. 953

从零搭建JavaWeb超市订单管理系统:SSM框架与MySQL实战指南

本文是一份详细的JavaWeb实战指南,手把手教你从零开始搭建一个超市订单管理系统。文章深入解析了为何选择经典的SSM框架组合进行开发,并提供了从数据库设计、项目骨架搭建,到用户登录、订单管理等核心功能的具体实现步骤。同时,涵盖了前端交互与生产环境部署的完整流程,是掌握Java企业级应用开发的绝佳实践项目。

bert9linguist的博客 197

【课程设计】ssm生鲜超市管理系统的设计与实现毕业设计源码261635

用户:注册登录、首页、商品信息、供应商信息、商品销售 管理员:登录、商品销售管理、用户管理、商品信息管理、采购管理、分类信息管理

专业程序开发源的博客 3682

【课程设计】springboot校园闲置物品交易系统 毕业设计 521472

校园闲置物品交易系统采用Java编程语言和Springboot框架,采用MySQL数据库来建立数据之间的转换,主要实现了首页、站点管理(轮播图、公告栏)用户管理(管理员、注册用户、卖家)内容管理(留言交流、留言分类、闲置资讯、资讯分类)商城管理(闲置商城、分类列表、订单列表)更多管理(订单处理、数据统计)等功能,为买家和卖家建立了一套科学有效的管理流程,减少了传统商品销售出现的失误,同时也方便了人们进行购物。本系统界面简洁,使用人员可以迅速掌握,有效的提高了工作效率。...

WeiXin_DZbishe的博客 3370

Java之使用spring+springMVC+myBatis实现用户管理系统(三)

给用户附加权限 之前版本在 Java之使用spring+springMVC+myBatis实现用户管理系统 Java之使用spring+springMVC+myBatis实现用户管理系统(二) 这一项功能主要用于修改用户登录的权限,将用户分为admin和普通user,admin用户有添加角色的功能,可以赋予其他用户更多的权限。 admin用户界面 user用户界面 首先在数据库里创建user_role和tb_role两张表 tb_role user_role 首先改写UserController的l

weixin_44066361的博客 1804

SpringMVC练习

SpringMVC练习 OVERVIEWSpringMVC练习1.角色列表role-list2.角色添加role-add3.角色删除4.用户列表user-list5.用户添加user-add6.用户删除 1.角色列表role-list 当用户点击角色管理时,发送req请求到服务端 在服务端找web层中的某个方法,负责把请求传递到业务层、dao层、通过jdbcTemplate模板对数据库进行查询, 将查询到的数据,原路进行依次返回, 最终返回到达web层时,将数据存储到modelAndView中 最后转发

https://blog.youkuaiyun.com/m0_74834215 750
上一篇: SpringMVC(18):使用springmvc+spring+jdbc 优化订单管理系统的示例(供应商新增的功能实现)
下一篇: FAQ(66):java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
后台技术汇
博客等级 码龄11年 670粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后台技术汇

对你的帮助,是对我的最好鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值