项目笔记

1、在进行修改或其他操作以后,在springMVC中不能通过转发跳转到主界面,而应该通过重定向!因为转发会将前一个请求信息携带过去,会影响第二次方法参数的执行!!

2、在mysql中:实际上CURRENT_TIMESTAMP时间戳默认值只能设置一个或者不设置,不能有两个以上!

  • ·时间戳类型

(1)当字段定义为timestamp,表示该字段在插入和更新时都不会自动设置为当前时间。 

(2)当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP,表示该字段仅在插入且未指定值时被赋予当前时间,再更新时且未指定值时不做修改。  

(3)当字段定义为timestamp ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入且未指定值时被赋值为"0000-00-00 00:00:00",在更新且未指定值时更新为当前时间。  

(4)当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入或更新时未指定值,则被赋值为当前时间 

  • ·时间戳类型使用建议  

(1)在只关心数据最后更新时间的情况下,建议将时间戳列定义为TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;  

(2)在关心创建时间和更新时间的情况下,建议将更新时间设置为时间戳字段,将创建时间定义为DAETIME 或 TIMESTAMP DEFAULT '0000-00-00 00:00:00',并在插入记录时显式指定创建时间;

3、从mysql数据库拿timestamp类型的数据,如果数据为'0000-00-00 00:00:00',则底层jdbc不支持会报错,解决方法只需要修改url即可:

  • jdbc.url= jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull

4、mysql数据库分页:
     提供了limit函数-LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:

  • select * from table where... limit 3,5    返回4-8行数据

5、如何描述查询数据库某条字段为null时的sql语句:

  •  在mysql中,查询某字段为null时候,不能使用=null,而是is null,不为空则是is not null!

6、当使用spring注册多个包下的类时候,在xml配置文件中使用组件扫描或者其他方式时,不同包名之间用逗号隔开即可!

7、在ssm项目中前端url的不同形式:

(1)js:window.location.href = 'customerUI.mvc';

(2)ajax:url : 'cs/updateCustomer.mvc',

(3)<a>标签:href="cs/insertCustomerUI.mvc"

(4)<form>表单:action="cs/insertCustomerUI.mvc"

8、当使用mybatis反向工程生成的sql语句适合,切记:criteria.andEmailEqualTo(linkMan.getEmail());

  • ·一定要给其赋值,如果值为null,那么就会报错,这是由于反向工程的源代码所写的异常判断语句!所有要支持输入为null,需要我们自定义sql语句

9、测试一下是否在SpringMVC的url中需要添加'/'才可以匹配?

  • ·经测试,不一定需要

10、切记:发送ajax请求时候,如果没反应,那么极有可能是你没有引入头文件!!

11、js校验:数字/邮箱/手机
例如校验输入的是否为纯数字:

$(function(){	
	$('#btn').click(function(){
	var val =$('#not_digit').val();
	var patrn = /^[0-9]*$/;
	if (!patrn.test(val)) {
	     alert('包含不是数字的字符');
	     return;
	}
	});

})

12、发送ajax请求到SpringMVC,如果处理请求后返回的json串中包含中文,当在前端界面显示中文出现乱码,解决方法很简单,只需要在SpirngMVC相对应的controller方法中添加如下代码即可:

response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
  • ajax:
                $.ajax({
			type : 'post',
			url : 'login/check.mvc',
			data : data,
			cache : false,
			sync : true,
			success : function(msg) {
				var json = JSON.parse(msg);
				if (0 == json.status) {
					alert("工号或密码错误");
				} else {
					//alert("1");
					$("#formlogin").submit();
				}
			},
			error : function() {
				alert("请求失败!");
			}
		});
  • springmvc:
        RequestMapping("/updatepassword")
	public void updatePassword(HttpServletRequest request,HttpServletResponse response,LogIn login) throws IOException{
		JSONObject json = new JSONObject();	
		int i = empLogInService.updatePassword(login);	
		if(i == 1){
			json.put("status", "1");
			json.put("msg", "更新成功!");
			
		}
		else{
			json.put("status", "0");
		}
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write(json.toString());
		
	}

13、 .SpringMVC中,ajax传值到后台,如何再从后台直接重定向到另一个界面?

  • 结论:ajax请求到SpringMVC中无法直接进行转发!
  • 解决思路:通过返回json串,在ajax中进行判断,将转发交给ajax间接进行
  • 例如:登陆认证->若初始密码123456->则跳转修改密码界面
  • ajax:
                function mylogin() {
		var employeeId = $("#employeeId").val();
		var emmPassword = $("#emmPassword").val();
		if ("" == employeeId || undefined == employeeId) {
			alert("工号不能为空");
			return;
		}
		if ("" == emmPassword || undefined == emmPassword) {
			alert("密码不能为空");
			return;
		}
		var data = {};
		data.employeeId = employeeId;
		data.emmPassword = emmPassword;
		$.ajax({
			type : 'post',
			url : 'login/check.mvc',
			data : data,
			cache : false,
			sync : true,
			success : function(msg) {
				var json = JSON.parse(msg);
				if (0 == json.status) {
					alert("工号或密码错误");
				} else if(2 == json.status){
					//转发到修改密码界面
					window.location.href = "login/toUpdate.mvc";
					
				}else {
					//alert("1");
					//跳转到主界面
					$("#formlogin").submit();
				}
				
			},
			error : function() {
				alert("请求失败!");
			}
		});
  • springmvc:
        /*
	 * 登陆验证
	 */
	@RequestMapping("/check")
	public void loginCheck(HttpServletRequest request,HttpServletResponse response,LogIn login) throws Exception{
		
		List<LogIn> list = empLogInService.findEmpFromLogin(login);
		JSONObject json = new JSONObject();	
		if(list.size() > 0){
			//修改初始密码
			if(login.getEmmPassword().equals("123456")){
				
				json.put("status", "2");
				
			}
			else{
				//保存用户信息到session中
				Employee employee = employeeService.findEmployee(list.get(0).getEmployeeId());
				HttpSession session = request.getSession();
				session.setAttribute("SessionEmployee", employee);
				json.put("status", "1"); 
				
			}
		}
		else{
			json.put("status", "0");
		}
		
		response.getWriter().write(json.toString());

	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值