1. 程式人生 > >入行初期遇到的小問題

入行初期遇到的小問題

這裡記錄一些自己入行初期遇到的小問題


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>