入行初期遇到的小问题

这里记录一些自己入行初期遇到的小问题


1.java的String类常用切割方法:

split()和subString(),split返回的是字符串数组,subString返回的是String。
关键点:对字符串进行切割或其他操作对象的,要先判断这个对象是否存在,否则报空指针。

StringUtil.isNotBlank();和 StringUtil.isNotBlank();

二者区别在于字符串是空格时,isNotBlank判断为空,而isNotEmpty判断不为空。
 isNotEmpty(str)等价于 str != null && str.length > 0
 isNotBlank(str) 等价于 str != null && str.length >0 && str.trim().length > 0

String str = "Hello World,i am your friend,nice to meet you!";
//切割成三个元素
str.split(",");// 1.Hello World   2.i am your friend    3.nice to meet you!
//2表示根据切割符切割成几份,结果切割成两个元素 
str.split(",",2);//1.Hello World   2.i am your friend,nice to meet you!
//截取序号6之后的
str.substring(6);//World,i am your friend,nice to meet you!
//截取序号[6,11)中的,java包前不包后,所以序号11的逗号不包括。
str.substring(6,11);//World

关于JS中对字符串切割可自行百度:https://www.cnblogs.com/qj0813/p/5110211.html

关于长度。数组是length属性,String是length()方法,集合是size()方法

2.数据库语句命名

DQL :Data Query Language 数据查询语言,查

DCL:controller

DML:Data Manipulation Language 数据操纵语言,增、删、 改

DDL:Data Difination Language 数据定义语言,对数据库对象的操作,表结构、视图、索引等

https://www.cnblogs.com/fan-yuan/p/7879353.html

3.struts 实体类要有get方法,值栈才能获取到值

https://blog.csdn.net/qq_27376871/article/details/51240321

https://blog.csdn.net/Nickthink/article/details/52106229   Struts2中值栈的理解

4.spring中用了注解@Resources、@Autowired,就不要再写get、set方法了

@Autowired是spring包的,根据类型查找

@Resources是J2EE的,默认根据name查找再根据type查找

建议使用resources J2EE的,减少代码与spring的耦合

https://www.cnblogs.com/xiaoxi/p/5935009.html

https://www.cnblogs.com/xdp-gacl/p/3495887.html  孤傲苍狼

5.jquery、js相关方法

$().each(function(i,var){}) 遍历

eval(); 将对象转化成json对象,一般用于异步请求返回的json类型字符串

6.EL表达式不能用。

在<page>指令中加 isELIgnored="false",原因暂未了解。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>

7.获取上下文路径

这样请求地址中就不需要再写上下文了

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">

8.int相除得到的是int,小数要double或者X.0

System.out.println(3/5);//0
System.out.println(3.0/5.0);//0.6
		
System.out.println(5/3);//1
System.out.println(5.0/3.0);//1.6666666

9.Ajax后,要在ajax请求后加 return false,防止表单二次提交,也是ajax跳入error回调函数的原因

之前搞不懂登录成功后怎么一直会去数据库查询两次,一次进入sucess函数一次就进入error函数

layui.use(['form','jquery','layer'], function () {
		        var form  = layui.form;
		        var $       = layui.jquery;
		        var layer  = layui.layer;
		       
		        	$(".login-btn").click(function(){
						var username = $("#username").val();
						var password = $("#password").val();
						var remember = $("#remember").prop("checked");
						
					   $.ajax({
							type:"POST",
							url:"userAjaxLogin",
							data:{'username':username,'password':password,'remember':(remember?1:0)},
							dataType:"text",
							success:function(mess){
								if(mess){
									layer.msg(mess, {
										  time: 5000, //5s后自动关闭
										  btn: [ '知道了'],
										  offset: '200px',
										  area: ['250px', '130px'],
										  icon: 5
										});
									return false;
								}else{
									window.location="admin/index.html";
								}
							},error:function(){
								layer.msg('网络异常,请尝试重新刷新!', {
									  time: 5000, //5s后自动关闭
									  btn: [ '知道了'],
									  offset: '200px',
									  area: ['260px', '130px'],
									  icon: 5
									});
							}
						})  
						return false;//这个很关键,要在ajax外面加
					}); 
			});

参考:https://blog.csdn.net/yangliu4683/article/details/78424299

https://www.cnblogs.com/zgrft/p/4383776.html  设置同步没试过

10.作为专业码农,集合等要给泛型

泛型,查询的什么数据就给什么泛型,让人一看就懂是什么数据

实际web项目中,里面泛型就是我们的实体类

List<Article> articles = new ArrayList();//泛型,查询的什么数据就给什么泛型,让人一看就懂是什么数据
List<User> articles = new ArrayList();
List articles = new ArrayList();//这个就是很不专业的码农,因为这个给老大diao了

11.表单与ajax冲突,post请求变成get请求

form表单如果method没有设置get、set,默认是get请求提交的,我们ajax设置的type:“post”,并不能改变表单的method。

所以即使form表单中ajax设置post,表单提交也是get请求,但是此时的ajax确实是post请求的,只是因为此时ajax提交后,表单又提交了一次,所以我们只看到get请求。这个要多看浏览器工具F12中的请求头。(学会使用浏览器的工具还有debug打点很使用

解决方法和9.Ajax后,要在ajax请求后加 return false,防止表单二次提交,也是ajax跳入error回调函数的原因 一样,在ajax请求后加return false,阻止表单二次提交。

方法二百度的没试过:

---------------------------------------------------------------------

(三)这个也是我遇到的问题,我在写了一个form标签,然后用submit的onclick事件去处理ajax响应,其中form的action=”。这个时候每点击一次submit,系统提示一次我的ajax object找不到,或者其它不相干的错误。调试JavaScript也是出现status=0的问题。我用普通的button代替submit button问题就解决了。
原文: https://blog.csdn.net/wabiaozia/article/details/60761433

-----------------------------------------------------------------------

http://blog.sina.com.cn/s/blog_7ffb8dd501013kdm.html     form表单中method的get和post区别  

12.js、jquery常用方法

remove()  是清除这个元素  empty()是清除这个元素的子元素

<div id="div1"><div id="div2"><div> <div>

$("#div1").remove();//清除所有都没了
$("#div1").empty();//清除div2  <div id="div1"><div>

隐藏元素

show()  hide()  toggle():显示被隐藏的,隐藏已显示的

$("#div11").css( 'visibility','hidden');//隐藏的元素在网页上所占的空间不变,还在占据着位置
$("#div11").css( 'display','none');//彻底隐藏,没有占位,看不见摸不着
$("#div11").hide();//彻底隐藏,没有占位,看不见摸不着

<div id="div11">测试区域<div/>

$("#div11").css( 'visibility','hidden');
$("#div11").css( 'display','none');
$("#div11").hide();

jquery和dom的转换

jquery对象的第一个元素是DOM元素 →→ $("#id")[0]

dom →→ jquery对象  $(dom元素)

13.EL表达式错误

c:if test="${? == ?}"这个就是正确的

c:if test=" ${? == ?}"这个就是错误的,在EL表达式前面多了个空格

14.JS forin遍历

for(var x in y)

for(x in y)

<!DOCTYPE html>
<meta charset="UTF-8">
<script>
var x;
var zoon = new Array();
zoon[0] = "猫猫";
zoon[1] = "狗狗";
zoon[2] = "猪猪";
for (x in zoon){
	console.log(zoon[x]);
}
 
var student={};
student.name="张三";
student["age"]=20;
for(var i in student)//前面变量i就是对象的属性名
{
	console.log(i);//name age
	console.log(student[i]);//张三 20  
}
</script>

https://blog.csdn.net/iteye_17658/article/details/82671449

15.JS全局变量

var a = 10;//全局变量
var test = function(){
	num = 50;//不加var 就会把变量提升为全局变量
	var num2 = 30;//局部变量
	alert(num);
	alert(num2);
}

 16.js所谓的重载是后面的方法覆盖前面的方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			function test(num){
				alert("1111");
			}
			
			function test(num,num2,num3){
				alert("222");
			}
			
			function test(num,num2){
				alert("333");
			}
			
			test(10,20,30);//调用哪个方法?调用test(3)
			//js所谓的重载是后面的方法覆盖前面的方法
		</script>
	</head>
	<body>
	</body>
</html>

要如java般实现重载,可判断参数的个数执行函数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
		   //实现函数的重载 arguments是参数个数
			var test = function(){
				//判断参数个数
				if(test.arguments.length == 1){
					alert("111");
				}else if(test.arguments.length == 2){
					alert("2222");
				}
			}
			
			test(10,20);
		</script>
	</head>
	<body>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_43632364/article/details/84289327