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



Smali语言基础语法 定义、声明、调用 Smali数据类型 定义:与Java相同,Smali中也有一套数据类型体系,且该体系实质上是同Java一一对照的。 示例1:Smali——Java数据类型对照表 PS:如上图所示,Smali语言中的数据类型的关键词基本上为Java中同名数据类型的首字母大写,需要着重记忆的例外为:1.long类型的关键词为大写J;2.boolean类型的关键词为大写Z;3.数组的关键词为左半边中括号[;4.object类型(各种类)的关键词为大写L加上该类的全类名路径,路径中的层级用/分割。 阅读详情

相关推荐

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 868

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

从智能家居到智慧城市:AI Agent Harness Engineering 作为统一控制中枢

我们可以把每个独立的智能系统看作一根带有独立功能的电线:智能家居Agent是负责家庭设备控制的电线,社区Agent是负责社区管理的电线,城市交通Agent是负责交通调度的电线,而AHE就是把这些分散的电线整合起来的「智能线束」:它不仅负责把不同接口、不同协议、不同层级的Agent连接起来,还提供统一的编排、调度、协同、观测能力,实现全局效用最大化的智能决策。

AI Agent Harness Engineering 202

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

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

BeJav 3232

基于MS5351的三通道可编程时钟发生器设计

时钟发生器是数字系统时序验证与信号完整性测试的核心基础设备,其原理基于锁相环(PLL)对参考晶振进行倍频与分频控制,通过寄存器配置实现多路独立频率输出。技术价值体现在高精度、低抖动、快速切换与工程可部署性之间取得平衡,尤其适用于FPGA/ASIC参考时钟调试、ADC/DAC采样时钟验证及嵌入式硬件时序裕量评估等场景。本方案采用MS5351三通道时钟芯片与ESP32主控协同架构,在保证LVCMOS输出质量与I²C可编程性的前提下,优化电源噪声抑制、晶体负载匹配和跨板信号完整性,兼顾成本、周期与实测稳定性,为实

weixin_31715353的博客 210

PyCharm与MicroPython联手:打造高效ESP32开发环境

本文详细介绍了如何使用PyCharm与MicroPython打造高效的ESP32开发环境。通过配置PyCharm插件、刷写MicroPython固件以及实战示例,帮助开发者快速上手嵌入式Python开发,显著提升物联网项目的开发效率。

weixin_29169899的博客 380

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

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

qq_53632806的博客 3184

深入解析Transformer三大注意力机制:自注意力、交叉注意力与因果自注意力

注意力机制是深度学习中的核心概念,它模拟了人类在处理信息时选择性聚焦的能力。其基本原理是通过计算查询与键的相似度,动态地为值分配权重,从而提取关键信息。这一机制解决了传统序列模型(如RNN)难以并行化和捕获长距离依赖的痛点,技术价值在于显著提升了模型的计算效率和表征能力。在自然语言处理、计算机视觉等应用场景中,注意力机制已成为构建强大模型的基石。本文聚焦于Transformer架构中的三种核心注意力变体:自注意力用于建立序列内部的全局关联,交叉注意力连接编码器与解码器的信息,而因果自注意力则确保自回归生成的

weixin_29094775的博客 410

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

利用大规模生物活性挖掘,计算识别针对癌基因驱动蛋白 EGFR、BRAF 与 CDK4 的高亲和力抑制剂

背景:精准癌症治疗需要小分子抑制剂与致瘤蛋白靶点之间的精确匹配。方法:我们使用 Python 及 ChEMBL 数据库 API 开发了一套计算流程,系统性地筛选针对 EGFR、BRAF 与 CDK4 的高亲和力配体。对 IC50 < 1000 nM 的生物活性进行过滤,并检索候选化合物的分子结构(SMILES)以供后续优化。结果:本研究共识别出 [插入总数] 种独特化合物。其中,对 BRAF 激酶而言,我们挑选了一批 IC50 低至 6.0 nM 的高效实验性化合物。

u012133341的博客 96

【2025最新版】间接平差——以水准网平差为例 (python详细过程版)

水准网间接平差的python代码实现。博客长期更新,本文最新更新时间为:2025年5月20日。

点云侠的博客 1702

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

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

Diligence is the mother of success. 963

OpenCV C++ 图像处理实战 ——《基于轮廓比对的缺陷检测》

本文使用OpenCV C++ 实现基于轮廓比对的缺陷检测。

Zero___Chen的博客 1147

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

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

Diligence is the mother of success. 1547

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

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

Diligence is the mother of success. 847

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

一、什么是SSM框架? SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。 其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。页面发送请求给控制器,控制器调用业务层处理逻辑,

weixin_44066361的博客 6594
上一篇: 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、付费专栏及课程。

余额充值