반응형

웹 페이지 사용자는 배터리 절약, 개인 정보 보호 등을 이유로

자바스크립트 사용을 비활성화 해 놓는 경우가 있습니다.

따로 설정하지 않았을때 default 값으로 js 사용이 비활성화 되어있는 경우도 있습니다.


그런 상황에서 자바 스크립트 활성화를 요청하기 위해 사용되는 태그가 <noscript> ~ </noscript> 입니다.


자바 스크립트를 사용하지 않는 사용자에게 메세지를 보내세요.(쪽지 메세지가 아닙니다)



1
2
3
4
5
6
7
8
<noscript>
    <div>
        <h4>Warning!</h4>
        <p>
            You need to have enabled to use this site.
        </p>
    </div>
</noscript>
cs


반응형
반응형

-1+3-5+7-9+11-13+15-17...



1-3+5-7+9-11+13-15+17...

홀수가 증가하며 교차로 부호가 +/- 로 바뀌며 기준점까지 총합을 구하는 코드입니다.


근데 왜 아래 코드 가운데 정렬이 안 풀릴까요..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MPswapSum {
 
    public static void main(String[] args) {
        int minusStart = minusStart(100);
        System.out.println(minusStart);
        int plusStart = plusStart(100);
        System.out.println(plusStart);
    }
 
    public static int minusStart(int finishedNum) {
        int sum = 0;
        for (int i = 1; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                if (sum >= 0) {
                    sum += (i * -1);
                } else if (sum < 0) {
                    sum += i;
                }
            }
        }
        return sum;
    }
 
    public static int plusStart(int finishedNum) {
        int sum = 0;
        for (int i = 1; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                if (sum <= 0) {
                    sum += i;
                } else if (sum > 0) {
                    sum += (i * -1);
                }
            }
        }
        return sum;
    }
 
}
cs




결과 :



반응형
반응형
1부터 100까지 홀수끼리 합, 짝수끼리 합을 구하는 코드입니다.
저는 따로 startedNum과 finishedNum으로 매개변수를 설정하여
동적인 범위의 홀수 및 짝수값을 구하도록 했습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package Study_2707;
 
public class Sum1to100 {
 
    public static void main(String args[]) {
        oddSum(110);
        evenSum(110);
    }
 
    public static int oddSum(int startedNum, int finishedNum) {
        int oddSum = 0;
        for (int i = startedNum; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                System.out.println(oddSum + " + " + i + " = " + (oddSum + i));
                oddSum += i;
            }
        }
        return oddSum;
    }
 
    public static int evenSum(int startedNum, int finishedNum) {
        int evenSum = 0;
        for (int i = startedNum; i <= finishedNum; i++) {
            if (i % 2 == 0) {
                System.out.println(evenSum + " + " + i + " = " + (evenSum + i));
                evenSum += i;
            }
        }
        return evenSum;
    }
 
}
 
cs






결과 : 



반응형
반응형

for문을 이용하여 1부터 100까지 합을 구했습니다.



1
2
3
4
5
6
7
8
9
10
11
12
public class Sum1to100 {
 
    public static void main(String[] args) {
        int sum = 0;
        for(int i=1; i<=100; i++) {
            System.out.println(sum + " + " + i + " = " + (sum+i));
            sum += i;
        }
        System.out.println(sum);
    }
 
}
cs





결과 : 



반응형
반응형

Spring 프로젝트에서 파라미터 전송시 많이 사용하는

String형 to int형 형변환과 int형 to String형변환 입니다.


Integer.parseInt(), Double.parseDouble(), Integer.toString() 를 사용하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class CovertString {
 
    public static void main(String[] args) {
        String str1 = "920";
        int int1 = 827;
        
        /* String형을 int형으로 */
        int string2int = Integer.parseInt(str1);
        double string2double = Double.parseDouble(str1);
        
        /* int형을 String형으로*/
        String int2string_1 = Integer.toString(int1);
        String int2string_2 = int1 + "";
        
    }
 
}
cs


반응형
반응형

스프링 프로젝트에 이미지를 업로드 하려고 하는데, 자꾸만 500에러가 발생합니다..


org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException


에러의 원인을 파악하지 못 했었는데, 제가 바인딩에 개념이 없었습니다...


form에 인코딩 타입 enctype="multipart/form-date" 해주시면 파일 업로드가 가능한데,

input="file" 의 name은 컨트롤러의 MultipartFile 객체가 선언되는 이름과 같아야 합니다.

예를들어, <input type="file" name="thumnail_file" /> 이라면,

컨트롤러에서 MultipartFile thumnail_file 이 되야 합니다.


*500 NullpointerException 에러는 이 에러 말고도 다양하게 발생됩니다.



public ModelAndView fileUpload(HttpServletRequest request, MultipartFile thumnail_file) throws Exception {
   // write something
}


반응형
반응형

스프링에서 게시판을 공부하며, form 에 입력된 데이터를 컨트롤러에 전송 하기 전에

유효성 검사를 하고 싶었지만, form 내부에 있는 input태그의 submit 타입은,

클릭 하면 바로 전송이 되서 유효성 검사를 진행 할 수 없었습니다.


그때, submit 타입을 button 타입으로 바꿔주시고

클릭 이벤트 발생시 form 을 submit 해주면 됩니다.


	

		$("#form1").on("click", function() {
			var title = $("#title").val();
			var startedDate = $("#startedDate").val();
			
			if(title==""){
				alert("Write the Title");
				$("#title").focus();
			} else if(startedDate==""){
				alert("Select the Started Date");
				$("#startedDate").focus();
			}
			
			document.getElementById("postForm").submit();	// 유효성 검사 후 submit
		});
반응형
반응형

Ajax 전송 때문에 거의 몇 일 동안 프로젝트 진행을 못 했는데

알고보니 제가 엉뚱하게 사용하고 있었네요 ㅠㅠ

Ajax의 이론을 자세히 모르시는 분은 꼭 먼저 이론을 이해 하시는걸 추천합니다.


간단하게,

ajax 메소드 안의 url 은 요청이 전송될 위치이며, type은 필요 방식에 설정 하시면 됩니다.

data 또한 전송할 데이터들을 선언 해주시면 되구요,


error, success, complete 는 예외처리라고 생각하실 수 있겠지만,

success 는 정상 처리 되었을때, complete는 finally 같은 구문이고,

error야 말로 예외처리라 할 수 있습니다.


$.ajax({ url : "전송할 URL", type : "POST", data : { title : title, startedDate:startedDate, finishedDate : finishedDate, summary : summary }, dataType : "json", error : function(error) { alert("error 발생"); }, success : function(data) { alert("전송 성공"); }, complete : function() { alert("최종 성공"); } });


반응형
반응형

남는 노트북으로 혼자 스터디를 위한 웹 서버를 사용 했습니다.

당시 cpu 2코어에 램2기가 짜리 노트북으로 썼는데 오래된거 치곤

스터디용 웹 서버로는 문제없이 말끔히 잘 사용 했습니다.

그러다가 어느 순간 맛이 가더니 영영 돌아오지 못할 강을 건넜지요 ㅜㅜ

그때 태양광 발전기 사용하는 친구집에 설치 했었는데 더이상 신세지기 미안해서

새로운 웹 서버는 제가 사는집에 설치 하기로 했습니다.


그런데... 기존에 iptime을 사용 할때는 포트포워딩부터 DDNS설정까지

아주 쉽게 사용 했었는데 U+은 좀 많이 헤매게 되더라구요 ㅠㅠ

당연히 제 실력이 미달이라 많이 버벅됬지만요...ㅎㅎ


그래서 기록용으로 포스팅 합니다.



1. U+는 192.168.219.1 이 기본 게이트웨이 입니다. 해당 url로 접속 해주세요. 

(업체마다 219 부분 숫자가 다르다고 하더군요)

그리고 사용하시는 공유기를 클릭 합니다.








2. 패스워드는 따로 변경하지 않으셨다면 공유기에 붙어있는 웹 admin 암호 입니다. 







3. 그리고 상태정보 -> DHCP 할당 정보에 들어갑니다. 








4. 직접 사용할 웹 서버 물리적 주소(MAC)와 할당할 IP주소를 적어주세요.

그리고 우측 위의 추가 버튼을 누르신 후 맨 밑 설정 적용을 눌러줍니다.

(해당 웹 서버 사용처에서 ipconfig으로 확인해줍니다)









5. 그리고 메뉴바에서 네트워크 설정 -> NAT 설정으로 들어갑니다.








6. 서비스 포트를 적어줍니다. 보통 웹 서버로 사용 하신다면, 8080-8080으로 해주시고,

추가적으로 포트를 더 사용하신다면 원하시는 범위만큼 설정 해주세요.

프로토콜은 TCP/IP로 해주시고 내부 주소는 할당 받은 IP를 적어주시면 됩니다.

내부 포트는 거의 8080이고 혹시 다르시면 알맞게 적어주세요.

그리고 추가 후 저장을 해줍니다. 








7. 위에는 내부(192.168.219.XXX:8080)로 접속한것이고,

아래는 외부에서(XXX.XXX.XXX.XXX:8080)으로 접속한 것입니다.

외부에서 접속하는 방법은 해당 공유기의 외부IP를 참조 하시면 됩니다.

반응형
반응형

스프링 프로젝트에 MariaDB 와 Mybatis를 연동 후 테스트 까지 해보겠습니다.

테스트 진행은 Maria DB의 테이블 및 테스트 칼럼이 샘플이 존재해야 합니다.

* 저는 testdb 테이블에 age 란 int형 칼럼이 존재 합니다.


첫 번째로, pom.xml 에 아래 dependency를 복사 및 붙여넣기 하세요.


*Mysql 과 Maria DB의 차이 ↓

http://gabrielyj.tistory.com/119?category=732269


		
		
			org.mariadb.jdbc
			mariadb-java-client
			1.1.7
		

		
		
			org.mybatis
			mybatis
			3.3.1
		

		
		
			org.mybatis
			mybatis-spring
			1.2.4
		

		
		
			org.springframework
			spring-jdbc
			${org.springframework-version}
		



그 다음 WEB-INF폴더 -> spring폴더 -> root-context.xml 파일을 열어준뒤,

Namespace 메뉴를 클릭합니다.

(아래를 참고하고 aop, context, jdbc, mybatis-spring을 추가해주세요)






Namespaces에서 추가가 완료되면,

아래 내용을 root-context.xml 에 추가 해주세요.

url 의 jdbc:mysql:// 이후로는 사용하시는 IP와 포트 번호를 입력 해주시고,

username 과 password 는 각각 ID와 PW를 입력 해주시면 됩니다.

* 로컬 DB를 사용하시는분은 (jdbc:mysql://localhost:8080/DB이름) 을 입력 하시면 됩니다. 

* 혹시 localhost 인데 포트번호가 8080 아니면 해당되는 포트번호를 꼭 입력 하셔야 합니다.



   
   
      
      
      
      
      
   

   
   
  



그 다음 Java Resources 폴더-> src/main/resources 폴더 내부에

mappers 패키지 생성 후 그 안에 testMapper.xml 을 생성하고,

그 외부에 mybatis-config.xml 파일을 추가로 생성합니다.






testMapper.xml (DB 쿼리문을 작성하는 부분입니다.)








	


mybatis-config.xml (이 부분은 테스트 하는 동안 수정할 필요 없습니다.입력만 잘해주세요.)










그 다음 추가로 Java Resources 폴더-> src/main/resources 폴더 내부에

mybatisUtil 이란 패키지를 생성하고,

인터페이스 TService 와 클래스 TServiceImpl를 생성해줍니다.

이 부분은 컨트롤러와 mapper 사이를 연결해주는 부분입니다.


SqlSession을 Inject 해주고,

namespace 에는 *Mapper.xml 내에서 사용하는 이름과 똑같아야 합니다.




인터페이스 TService (in mybatisUtil package)

package mybatisUtil;
public interface TService {
	public int test();
}


클래스 TServiceImpl (in mybatisUtil package)

package mybatisUtil; import javax.inject.Inject; import org.apache.ibatis.session.SqlSession; import org.springframework.stereotype.Service; @Service public class TServiceImpl implements TService { @Inject private SqlSession sqlSession; private static final String namespace = "my.mappers.testMapper"; @Override public int test() { return sqlSession.selectOne(namespace + ".selectTest"); } }




이제 다시 root-context.xml 로 돌아가서 아까 입력 안한 2, 3번째 부분을 완성니다.

주의할 점은, mapperLocations 부분 부터

Mapper, Service, ServiceImpl 이 일치하지 않으면, 404에러 발생합니다.

404에러가 발생하면 꼭 *Mapper.xml 부터 절차적으로 확인 해보세요!




   
   
      
      
      
   

   
   

      
   

   




이렇게 DB연동 작업은 끝났습니다.

마지막으로 controller 에서 실행을 하면 됩니다.


Service 부분을 @Autowired 어노태이션을 입력 하여 TService 를 등록 해주시고,

ModelAndView형 메소드를 만들어 그 안에 test() 메소드를 실행 해줍니다.

*저는 바로 int 형으로 반환을 받고 뿌려주기 위해 int 형으로 선언 하였습니다.

그리고 addObject 메소드를 이용하여 mav 객체에 담아주고,

setViewName 메소드를 이용해 호출되는 페이지명도 담아줍니다.

* test.jsp 를 불러올것이기 때문에 test를 담았습니다.




package controller;

import javax.servlet.ServletException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import mybatisUtil.TService;

@Controller
public class TestController {
	
	@Autowired
	private TService tDAO;
	
	@RequestMapping(value = "/test.do")
	public ModelAndView portList(ModelAndView mav) throws ServletException {
		
		int test = tDAO.test();
		
		mav.addObject("test", test);
		mav.setViewName("test");
		return mav;
	}
}



마지막으로 아래를 참고하여 test.jsp 를 생성해줍니다.

그 다음 EL문을 이용하여 ${test}를 입력 합니다

* 위에서 addObject 할 때 이름을 'test'로 했기 때문에 ${test}


그리고 !!!


http://localhost:8080/프로젝트명/test.do   <- 접속하세요

이 부분이 말끔히 실행되려면, servlet-context.xml 부분의

preffix="/" suffix=".jsp" 입니다.

그래서 위에 setViewName 으로 넘어온 test가 /test.jsp 가 됩니다.


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




Insert title here


	${test}






최종 결과 : 저는 DB에 입력된 age 값이 '10' 이였습니다.

 





반응형

+ Recent posts