반응형

 

-- 어제 날짜 구하기
select to_char(sysdate-1,'yyyymmdd') from dual; 
-- 특정일 전날 날짜 구하기
select to_char((to_date('20210112','yyyymmdd'))-1, 'yyyymmdd') from dual; 
-- 시각 구하기(24시 표시 버전)
select to_char(sysdate,'hh24') from dual; 
-- 시각 구하기
select to_char(sysdate,'hh') from dual; 
-- 분 구하기
select to_char(sysdate,'mi') from dual; 
-- 초 구하기
select to_char(sysdate,'ss') from dual;
반응형
반응형

명령문 실행하려고 ctrl+enter 누르다가 잘못 눌러서 접속창 없어진거 원데이 투데이...

ctrl+shift+enter을 다시 눌러주면 생긴다 ㅠ ㅠ 

반응형
반응형

 

대충 이렇게 생긴 테이블이다...

<tr>
	<td><input type="checkbox"></td>
 	<td><input type="text" value="111"></td>
	<td><input type="text" value="222"></td>
<tr>

<tr>
	<td><input type="checkbox"></td>
 	<td><input type="text" value="333"></td>
	<td><input type="text" value="444"></td>
<tr>

 

checkbox가 체크된 tr의 자식인 td들의 input value들을 다 선택하는 방법..

 

* table tr index는 0부터 시작한다

* td index도 0부터 시작한다

* 원하는 행부터 checkbox가 checked 인지 검사

* checked된 행을 찾으면 그 안의 input[type=text]인 자식을 다 찾는다..

* find()로 찾은 자식들은 앞에부터 eq(0)으로 찾으면 된다. ㅎㅎㅎㅎ

 

var data[]; //data배열 생성

for(var i=2; i <$('table tr').size(); i++){
	if($('table tr').eq(i).children().find('input[type="checkbox"]').is(':checked')){
        
	var setData={}; //배열에 넣을 데이터쌍 변수 생성
    
	setData['aa'] = $('table tr').eq(i).find('input[type="text"]').eq(0).val();
	setData['bb'] = $('table tr').eq(i).find('input[type="text"]').eq(1).val();
    
	data.push(setData);
    
    }
}

 

setData를 for문 밖에 생성하게 되면

매번 다른 tr의 td값들이 덮어씌워진다. 결국 한 행의 td값들만 들어가게 됨. ㅠ ㅠ 

콘솔에서 찍어보니 data는 이렇게 생긴거같다

data : [ { aa : "111" , bb : "222" } ], [ { aa : "333" , bb : "444"} ] 

 

반응형
반응형

zzznara2.tistory.com/673

 

[java] 자바에서 String을 json 객체로 변환하는 방법

java에서 String으로 돼 있는 json을 JSONObject로 변환해서 json을 사용하는 샘플예제입니다. 저도 이거 찾느라 한참을 뒤졌네요. import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser..

zzznara2.tistory.com

이 글을 참조해서 String to JSON 변환을 하려고 했는데..

import 에러...

그래서 json-simple-1.1.1.jar 파일을 Maven Dependendy(라이브러리)에 추가하니 됨!

 

result는 json형태로 만든 String 변수임 

JSONParser parser = new JSONParser();
Object obj;
	try{
		obj = parser.parse(result);
	}catch(Exception e ){
		obj="error";
	} 
JSONObject jsonObj = (JSONObject) obj;
System.out.println("생성된 jsonObj : " + jsonObj);

return jsonObj;

1. JSONParser 생성

2. Object 생성

3. parser로 string 변환... 하려는데... unhandled exception 에러가 떠서 try catch를 해줬다 ㅠ ㅠ 거 참

4. 생성된 jsonObj 리턴 ㅎㅎ .. 해야 돼서 함수 리턴타입도 JSONObject로 바꿔줌!

반응형
반응형

라이브러리에 jar을 추가하려고 ... 했더니 lib 디렉토리도 못찾고...

Maven Dependencies에도 수동으로 paste로 추가하려 했더니 안 됨... ㅠ ㅠ 

Maven의 경우 pom에서 의존성관리를 한다고 함 ! 그래서 pom.xml에서 추가해주면 된다고 함

 

1. pom.xml

dependencies 밑에 이렇게 추가해주었음 

 

<groupId>임의의 이름</groupId>

<artifactId>버전 지우고 jar 파일명</artifactId>

<version>버전 </version>

 

2. 추가 후 저장하니까 에러가 뜨는거임.. 그래서 저 표시된 폴더에 jar파일을 수동으로 추가해줌 

추가된 dependency 내용을 지웠다가 다시 적고 저장하니까 이제 됨~!~!~! 

반응형
반응형

netstat 조회 결과 중 pid 값을  taskkill 명령어에 써먹는 batch파일을 만들려고 함

 

1. netstat 명령어 실행 -> 결과 중 3148 을 변수에 저장하려고 함 

C:\Users>netstat -ano | findstr 8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       3148
  TCP    [::]:8080              [::]:0                 LISTENING       3148

 

2.  변수에 3148을 대입하는 명령어

1) %a 변수에 netstat 결과 중 3148을 넣는다

2) result 변수에 %a를 대입한다

for  /f  "tokens=5  delims=  "  %a  IN  ('netstat  -ano  ^|  findstr 8080'do  set  result=%a
tokens : 결과에서 몇 번째를 저장할 지 설정
delims : 구분자

    "tokens=5 delims= "  :  공백을 구분자로 다섯번째 문자열을 선택(3148)

%a : 임시로 쓸 변수
result : 명령어 저장할 변수
in ( ) : 실행할 명령어를 넣는다.
do() : 앞의 명령어 실행 후 실행할 내용
* 명령어에 ' | ' 나 ' ( ' 같은 특문이 있으면 앞에 ^를 붙일 것
* 변수 세팅시 ( set 변수=%a) 공백 없도록
* batch파일에 적을 때에는 %a에 %를 하나 더 붙인다 

 

cmd에 실행한 예시

netstat 결과가 두줄이라 그런지... set result가 두 번 실행됨..

C:\Users\heirr>for /f "tokens=5 delims= " %a IN ('netstat -ano ^| findstr 8080') do set result=%a

C:\Users\heirr>set result=3148

C:\Users\heirr>set result=3148

C:\Users\heirr>echo %result%
3148

 

반응형

batch 파일 내용(test.bat)

//batch 파일을 관리자로 실행하기 위해 넣었음
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)

cd ../

for /f "tokens=5 delims= " %%a IN ('netstat -ano ^| findstr 8080') do set result=%%a

//result 변수를 taskkill 명령어에 사용
taskkill /f /pid %result%

//batch 파일로 실행한 cmd가 자동종료되지 않게 하기 위함
cmd /k

 

 

반응형
반응형

 

<select id="selectByCareerYear" resultType="HashMap">
	select user_career_year || '년'
			,count(user_career_year) || '명'
				from(select 
					 trunc(months_between(sysdate,user_comp_enter)/12) user_career_year 
					 from user_info) 
				where not user_career_year is NULL 
				group by user_career_year 
				order by user_career_year desc
</select>

셀렉트 결과를... Developer에서 봤을때 처럼..

원하는 모양 : Hashmap으로 key="9년" , value="1명"

{COUNT(USER_CAREER_YEAR)||'명'=1명, USER_CAREER_YEAR||'년'=9년}

 

keySet() 으로 확인해보니 key는  [COUNT(USER_CAREER_YEAR)||'명', USER_CAREER_YEAR||'년'] 이고

values() 로 확인해보니 values는 [1명,9년] 

이렇게 뜨는데... 

그럼 쿼리문에서 이름을 바꾸자..

as로 alias를 명명했다

<select id="selectByCareerYear" resultType="HashMap">
	select user_career_year || '년' as year
			,count(user_career_year) || '명' as count
				from(select 
					trunc(months_between(sysdate,user_comp_enter)/12) user_career_year 
					from user_info) 
				where not user_career_year is NULL 
				group by user_career_year 
				order by user_career_year desc
</select>

keySet이 year과 count가 되었다. 

반응형
반응형

 

/career.do 를 호출하는 코드를 짰는데 다음과 같은 에러가 남 

WARN : org.springframework.web.servlet.PageNotFound -  No mapping found for HTTP request with URI [career.do] in DispatcherServlet with name 'appServlet'

 

tomcat 서버 > web module > 

내 card 프로젝트 path가 /card로 되어있었음

/ 로 수정하고 저장, 재시작 하니까 호출 된당 ㅎㅅㅎ

반응형
반응형

boardType 변수는 String[] 타입

String[] 타입을 map에 넣었다.

String[] boardType; //checkbox 선택지 가져올 배열 생성
boardType=request.getParameterValues("boardType"); //checkbox 선택지 가져오기
map.put("boardType", boardType);

 

이 map을 파라미터로 받아서 select 쿼리를 하려고 함 

   <select id="boardTypeList"  parameterType="hashmap" resultMap="boardVo">
   		select 
   			board_type
   			,board_num
   			,board_title
   			,board_comment
   			,total_cnt 
   		from (select 
				board_num
				,board_type
				,board_title
				,board_comment
				,row_number() over(order by board_num desc) as numrow
				,count(*) over() as total_cnt
			from board
			<if test="boardType!=null">
				where 
				<foreach collection="boardType" item="arr" separator="or">
					board_type= #{arr}
				</foreach>	
			</if>
				
			)
		where NUMROW BETWEEN (#{pageVo.pageNo}-1)*10 + 1 AND (#{pageVo.pageNo})*10

    </select>


<foreach collection = "boardType" item="arr" separator="or">

collection : 전달받은 인자. List or Array 형태만 가능
item : 전달받은 인자 값을 alias 명으로 대체
open : 구문이 시작될때 삽입할 문자열
close : 구문이 종료될때 삽입할 문자열
separator : 반복 되는 사이에 출력할 문자열
index : 반복되는 구문 번호이다. 0부터 순차적으로 증가

 

 

아래 블로그의 글을 참고하였음!

java119.tistory.com/85

 

[MyBatis] 동적 쿼리 foreach문 문법 총 정리

시작하기에 앞서 참고 자료 *ibatis iterate문 지원 태그 property : 파라미터명 prepend : 쿼리로 쓰일 문자 open : 구문이 시작될때 삽입할 문자열 close : 구문이 종료될때 삽입할 문자열 conjunction :..

java119.tistory.com

 

반응형
반응형

일반/Q&A/익명/자유 중 게시글 타입(전체선택/일반/Q&A/익명/자유)을 check하여 조회하면

빨간 네모 친 부분(게시글 표시 부분)만 동적으로 바뀌도록 구현 

 

1. checked된 값을 serilalize

var $frm = $j("input[class=checktype]:checked");
var param = $frm.serialize();

 

2. AJAX를 이용하여 전송 

$j.ajax({
	    url : "/board/boardTypeList.do",
	    dataType: "json",
	    type: "POST",
	    data : param

 

3. Controller에서 getParameterValues를 이용해 파라미터를 받는다. 

controller 전체 코드는 글 마지막부분 참고

String[] boardType; //checkbox 선택지 가져올 배열 생성
boardType=request.getParameterValues("boardType"); //checkbox 선택지 가져오기
map.put("boardType", boardType);//checkbox 선택지 map에 담기 

 

4. 게시글을 List에 담고 hashmap을 통해 반환하려고함 

List<BoardVo> boardList = new ArrayList<BoardVo>(); //글 가져올 List 생성
boardList = boardService.selectBoardType(map);//pageVo와 checkbox 선택지 넘김
		
int totalCnt = 0; //totalCnt 초기화
totalCnt = boardService.boardTypeListCount(boardType); //checkbox 선택지 넘김

HashMap<String, Object> result = new HashMap<String, Object>();
CommonUtil commonUtil = new CommonUtil();
result.put("list", boardList);
result.put("totalCnt", totalCnt);
result.put("codeMap", codeMap);
String result1 = commonUtil.getJsonCallBackString(" ", result);
return result1;

 

result 해쉬맵에 담겨진 값은 JSON타입으로 view(jsp)에 반환된다.

반환되는 값은 이렇게 생김

result1 : {"totalCnt":3,"list":[{"boardType":"a04","boardNum":10,"boardTitle":"4444","boardComment":"4444","creator":null,"modifier":null,"totalCnt":3,"boardVoList":null},{"boardType":"a04","boardNum":9,"boardTitle":"3","boardComment":null,"creator":null,"modifier":null,"totalCnt":3,"boardVoList":null},{"boardType":"a04","boardNum":7,"boardTitle":"123123","boardComment":null,"creator":null,"modifier":null,"totalCnt":3,"boardVoList":null}],"codeMap":{"a02":"Q&A","a01":"일반","a04":"자유","a03":"익명"}}

 

5. result1 값을 반환받은 view(jsp)에선 그 값을 table에 뿌려주면 됨.

 success: function(data){

	//데이터를 새로 뿌리기 위해 이전 표를 지움 
	var trlength = $j('#boardTest tr').length;
	for(var t=trlength-1;t>0;t--){
	 	table.deleteRow(t);
     }
     
 	//데이터 뿌리기 
	for(var i=0;i<data.list.length;i++){
		$j('#boardTest').append("<tr><td align='center'>" 
			+ data.codeMap[data.list[i].boardType] + "</td>" +
			"<td>" + data.list[i].boardNum + "</td>" +
			"<td><a href= '/board/" + data.list[i].boardType 
			+ "/" + data.list[i].boardNum 
			+ "/boardView.do?pageNo=";  
 	}
 }

 

반응형

[전체 코드]

<javascipt > 

//게시판 글 조회 AJAX
$j("#search").on("click",function(){
	var ch = $j('input:checked').val();
	if(ch==null){
	  alert("체크 하세요");
	    return false;
	}
	
	
	var $frm = $j("input[class=checktype]:checked");
	var param = $frm.serialize();
	var table = document.getElementById('boardTest');
	
	$j.ajax({
	   url : "/board/boardTypeList.do",
	   dataType: "json",
	   type: "POST",
	   data : param,
	   success: function(data)
	   {
	     console.log(data.list.length)
	     $j('#cntbox').html("total : " + data.totalCnt);
         
	     //데이터를 새로 뿌리기 위해 이전 표를 지움 
	     var trlength = $j('#boardTest tr').length;
	     for(var t=trlength-1;t>0;t--){
	       table.deleteRow(t);
	     }

	     //데이터 뿌리기 
	     for(var i=0;i<data.list.length;i++){
		$j('#boardTest').append("<tr><td align='center'>" + data.codeMap[data.list[i].boardType] + "</td>" 
		+"<td>" + data.list[i].boardNum + "</td>" 
		+"<td><a href= '/board/" + data.list[i].boardType 
		+ "/" + data.list[i].boardNum 
		+ "/boardView.do?pageNo=" ;
	     }
	   },
	   error: function (){alert("검색실패");}
	});	
});

 

<Controller>

	//글 타입 조회 AJAX처리
	@RequestMapping(value="/board/boardTypeList.do", method=RequestMethod.POST, produces = "application/json; charset=utf8")
	@ResponseBody
	public String BoardTypeList(HttpServletRequest request,Model model) throws Exception {
		
		//page와 checkbox 선택지 담을 변수
		HashMap<String, Object> map = new HashMap<String, Object>(); 
		
		//checkbox 선택지 가져올 배열 생성
		String[] boardType; 
        
		//checkbox 선택지 가져오기
		boardType=request.getParameterValues("boardType"); 
        
		for(int i=0; i<boardType.length;i++) {
		   System.out.println("선택한 checkbox[" + i + "] : " + boardType[i] );
		}
        
		//checkbox 선택지 map에 담기 
		map.put("boardType", boardType);
		
				
		PageVo pageVo = new PageVo();
		pageVo.setPageNo(1);
        
		//pagevo map에 담기
		map.put("pageVo",pageVo); 
		
		//글 가져올 List 생성
		List<BoardVo> boardList = new ArrayList<BoardVo>();
        
		//pageVo와 checkbox 선택지 넘김
		boardList = boardService.selectBoardType(map);
		
		//totalCnt 초기화
		int totalCnt = 0; 
        
		//checkbox 선택지 넘김
		totalCnt = boardService.boardTypeListCount(boardType); 
		
		//타입 id - name 짝 map 생성
		HashMap<String, String> codeMap = new HashMap<String, String>(); 
        
		//타입 가져올 List 생성
		List<CodeVo> codeList = new ArrayList<CodeVo>(); 
        
		//타입id, 타입 이름 가져오기	
		codeList = boardService.selectCode("menu");
        
		//타입id, 타입 이름List Map에 담기
		for(int i=0; i<4;i++) {
		   codeMap.put(codeList.get(i).getCodeId(),codeList.get(i).getCodeName());
		}
		
		
		HashMap<String, Object> result = new HashMap<String, Object>();
		CommonUtil commonUtil = new CommonUtil();
		result.put("list", boardList);
		result.put("totalCnt", totalCnt);
		result.put("codeMap", codeMap);
		
		String result1 = commonUtil.getJsonCallBackString(" ", result);
		
		model.addAttribute("codeMap",codeMap);
		model.addAttribute("totalCnt", totalCnt);
        
		return result1;
	}
반응형

+ Recent posts