반응형

build path에 Maven Dependencies 가 없어가지고.. 온갖 에러가 다 나는데..

1. project clean

2. maven Update Project 

3. maven offline 설정, settings.xml 설정

내 환경은 오프라인이었고..    Maven Dependencies 가 별 염병을 다해봐도 안 생겼다. 

 

프로젝트 루트 경로의 .classpath 파일을 열어서 아래 내용을 추가해주고 프로젝트 클린 및 재정비하고 다시 올리니 잘 된다 ㅠ ㅠ 

	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
		</attributes>
	</classpathentry>
반응형
반응형

* JSTL 이란

jsp 표준 태그 라이브러리.

연산이나 조건문이나 반복문인 if문, for문, DB를 편하게 처리할 수 있게 하는 태그 라이브러리.

내가 사용해본 라이브러리는 크게 세가지가 있음. core,function,formatting.

 

1. JSTL core 라이브러리

JSP의 헤더에 추가한다.

<% @taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

 

태그명 설명 예시 비고
<c:set> 변수를 세팅하여 값을 할당하거나
javaBean의 값을 변경할수 있음
<c:set var="myData" value="쩝" />

<c:set target="${myList}" property="content" value="어쩌구 저쩌구" />
 
<c:out> 값을 출력함 <c:out value="${myList.content}" />

<c:out value="<script type='text/javascript'>alert(123);</script>" escapeXml="true"/>
c:out에는 escapeXml 속성이 있으며 기본값이 true로, 문자를 텍스트로 그대로 내보낸다. false로 설정하는 경우 특문 escape가 안 되어 보안에 취약할 수 있음
<c:if> if문 <c:if test="${name eq '포도'}" >
 ${name}은 보라색
</c:if>
 
<c:choose>
<c:when>
<c:otherwise>
switch문과 같은 기능으로 여러 조건 중 하나를 선택 <c:choose>
   <c:when test="${number eq '1'}"> 
   </c:when>
   <c:when test="${number eq '2'}">
   </c:when>
   <c:otherwise>
   </c:otherwise>
</c:choose>
 
<c:foreach> 반복문 <c:forEach var="board" items="${boardList}">
    <c:out value="${board.title}" />
</c:forEach>
 

 


2. JSTL formatting 라이브러리

JSP의 헤더에 추가한다.

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

 

태그명 설명 예시
parseDate 문자열을 Date 타입으로 변경 <fmt:parseDate var="today" value="20230717" pattern="yyyyMMdd" />
formatDate  Date 타입을 문자열로 변경 <fmt:formatDate var="now_date" value="${now_date}" pattern="yyyyMMdd"/>

 


3. JSTL function 라이브러리

JSP의 헤더에 추가한다.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

 

태그명 설명 예시
fn:length 문자열 길이 <c:when test="${fn:length(myArray) > 0}">
fn:contains 문자열 포함여부판단 <c:if test="${fn:contains(arrayList, 'AA')}">

 

반응형

'코딩 관련 > JSP 관련' 카테고리의 다른 글

[JSP] EL 안에 EL 넣기  (0) 2020.09.24
[JSP] JSP 주석 관련 <!-- 와 <%--  (0) 2020.09.17
반응형

varbinary은(는) text과(와) 호환되지 않습니다.

내가 insert하려는 컬럼중에 text 타입인 컬럼이 있는데..

NULL이 가능한 컬럼인데.. NULL을 넣으려하니까 에러가난다...

 

 

NULL이 binary 형태의 값으로 변환되어서 들어가려는 모양이다..

 

해결) 그래서 null값이 아니라 ''로 넣음

 

반응형
반응형

환경) 백엔드와 프론트엔드가 분리되어있음

 

첫번째방법

PrintWriter 를 사용하여 script를 뿌려준다. javascript 소스를 텍스트로 넣으면 된다.

location.href='리다이렉트 시킬 주소'

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response,
            @RequestParam Map<String, Object> paramMap,Model model) throws Exception {
        PrintWriter out = new PrintWriter(response.getWriter());
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<meta charset=\"UTF-8\" />");
        out.println("<title>TITLE입니다.</title>");
        out.println("<head>");
        out.println("</head>");
        out.println("<body>");
        out.println("<script type='text/javascript'>");
        out.println("alert('경고~~');");
        out.println("location.href='https://www.google.com';");
        out.println("</script>");
        out.println("</body>");
        out.println("</html>");
        return null;
    }

 

 

두번째방법

HTTP 응답 상태 코드 301 Moved Permanently를 사용한다.

ResponseEntity를 리턴해주는 경우 상태코드를 Moved Permanently로 설정하고 

헤더에 리다이렉트시킬 url을 적어준다. 

@RequestMapping(value = "/redirect2")
    public ResponseEntity redirect2(@RequestBody Map<String, Object> paramMap)
            throws Exception {
        return ResponseEntity
                .status(HttpStatus.MOVED_PERMANENTLY)
                .contentType(MediaType.APPLICATION_JSON)
                .header("location", "http://localhost:8081/redirect2")
                .body("message");
    
}

 

세번째방법

서버페이지를 리턴해주고 서버페이지의 script에서 location.href에 리다이렉트 시킬 url을 적어준다.

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return "serverPage/index";
    }
<script type="text/javascript">
    parent.parent.location.href="[[${clientUrl}]]";
</script>
반응형
반응형

오류내용 ▼

기본 클래스 ''를 찾거나 로드할 수 없습니다.

 

 

1. java [java파일] 명령어를 실행하면 컴파일이 된다.

java MyClass.java

class파일이 현재 디렉토리에 생긴다

 

2. javac [클래스파일]  명령어로 클래스파일을 실행한다. (.class를 붙이지 말고..)

javac MyClass

나는 MyClass.class라고 확장자를 붙여 실행하려고 하니까 저 에러가 떴었음.

반응형
반응형

checkbox 여러개의 값을 넘겨서 쿼리에 그 값들을 이용하려고 함.

1. HTML 

form submit시에 check된 value들만 전달됨.

<form name="f" method="get" action="/checkMenu">
<input type="checkbox" name="menu" value="hamburger">
<input type="checkbox" name="menu" value="pizza">
<input type="checkbox" name="menu" value="spagetti">
<input type="checkbox" name="menu" value="french fries">

<button type="submit">

 

2. VO

checkbox의 값들을 담을 변수는 배열로 만들어준다.

public class menuVO {
	private String[] menus;
}

 

3. Controller

request.getParameterValues로 받았다.

@RequestMapping
public ModelAndView checkMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
	String[] menus = request.getParameterValues("menus");
}

 

4. 쿼리파일 (xml)

iterate를 사용했다.

property = 변수명

<select id="getMenuInfo" parameterClass="menuVO" resultClass="orderVO">
	SELECT MENU_CODE, MENU_PRICE FROM MY_MENU_TABLE
	WHERE MENU_NAME IN
	<iterate property ="menus" open="(" close=")" conjunction=",">
	#menus[]#
	</iterate>
</select>
반응형
반응형

https://www.acmicpc.net/problem/9012

import java.util.Scanner;
import java.util.Stack;

public class MyClass {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
        int testcase = Integer.parseInt(sc.nextLine()); //case 수

	for(int i = 1; i <= testcase ; i++){
            String line = sc.nextLine();
            Stack<Character> stack = new Stack<>();
                for(int c = 0;c<line.length();c++){
                    //여는 괄호
                    if('(' == line.charAt(c)){
                       stack.push(line.charAt(c));
                    }else{
                    //닫는괄호
                        if(stack.empty()){
                            System.out.println("NO");
                            break;
                        }else{
                            stack.pop();
                        }
                       
                    }
                    
                    if(c==line.length()-1){
                        if (stack.empty()) {
			                System.out.println("YES");
	                   	}else{
	                   	    System.out.println("NO");
	                   	}
                    }
                    
                }
              
        }
    }
}

 

* 학습내용

1. String과 char의 비교

- char은 ''를 사용

- String은 ""를 사용

- str.equals(String.valueOf(ch))

- 그냥 '' == ch 해서 char끼리 비교하자...

 

2. Stack 타입 변수 사용

- 스택 선언하기 :  Stack<> stack = new Stack<>();

- push(), pop(), empty()

 

3. 메모리 사용 영역

JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 세부 영역으로 구분해서 사용한다.

1) Method 영역

- 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류하여 저장한다.

2) Heap 영역

- 객체와 배열이 생성되는 영역

- 생성된 객체/배열을 참조하는 변수나 필드가 없다면 Garbage Collector를 실행시켜 힙 영역에서 자동으로 제거한다.

3) JVM Stack 영역

- 각 스레드가 시작될 때 할당된다.

- 메소드를 호출할 때마다 프레임(메소드의 변수 및 기타 부가정보로 이루어짐)을 push 하고 메소드가 종료되면 pop 하는 동작을 수행함.

- 프레임 내부에는 로컬 변수 스택이 있는데, 최초로 변수에 값이 저장될 때 생성됨.

- 기본 타입 변수는 스택영역에 직접 값을 가짐

- 참조 타입 변수는 값이 아니라 객체 주소를 가짐.

반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[JAVA] 너의 평점은  (0) 2023.03.12
[JAVA] 그룹 단어 체커  (0) 2023.03.12
[JAVA] 크로아티아 알파벳  (0) 2023.03.11
[JAVA] 직사각형에서 탈출  (0) 2023.03.09
[JAVA] 4344번 평균은 넘겠지 문제  (0) 2023.03.09
반응형

https://www.acmicpc.net/problem/25206

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

 

import java.util.Scanner;
import java.util.HashMap;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        
        HashMap<String,Double> pointMap = new HashMap<String,Double>();
        pointMap.put("A+",4.5);
        pointMap.put("A0",4.0);
        pointMap.put("B+",3.5);
        pointMap.put("B0",3.0);
        pointMap.put("C+",2.5);
        pointMap.put("C0",2.0);
        pointMap.put("D+",1.5);
        pointMap.put("D0",1.0);
        pointMap.put("F",0.0);
        
        int creditSum=0; //이수학점  총합
        Double scoreSum=0.0; //합산점수
        
        while(sc.hasNextLine()){
            String line = sc.nextLine();
            Scanner lineScanner = new Scanner(line);
            //과목명은 패스
            lineScanner.next();
            
            Double credit = Double.parseDouble(lineScanner.next());
            String score =  lineScanner.next();
            
            Double point=0.0;
            
            //P 과목은 패스
            if(!"P".equals(score)){
                point = pointMap.get(score);
                //System.out.println("합산할 점수 : " + point * credit);
                scoreSum += point * credit;
                creditSum += credit;
            }
            
            lineScanner.close();
        }
        
        //System.out.println("이수학점 총합 : " + creditSum);
        //System.out.println("합산 점수 : " + scoreSum);
        if(creditSum == 0){//합산점수가 0인경우 평점 0.0 출력
            System.out.println("0.000000");
        }else{
            System.out.printf("%.6f",scoreSum/creditSum);
        }
        
    }
}

처음에 F인 과목까지 계산에서 제외해버려서 자꾸 틀렸다고 나왔었다..

P인 과목만 제외고 F점수는 포함

문제를 잘 이해해야겠다 ㅠ.,ㅠ

 

* 학습내용

1.  nextLine() : "\n" 개행문자도 입력 받는다.

next()다음에 nextLine()을 하면 개행문자가 들어간다.

hasNextLine도 마찬가지.

 

2. lineScanner() : 한 줄 입력받기. 처음 써봤다.

 

반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[JAVA] 9012번 괄호  (0) 2023.03.13
[JAVA] 그룹 단어 체커  (0) 2023.03.12
[JAVA] 크로아티아 알파벳  (0) 2023.03.11
[JAVA] 직사각형에서 탈출  (0) 2023.03.09
[JAVA] 4344번 평균은 넘겠지 문제  (0) 2023.03.09
반응형

https://www.acmicpc.net/problem/1316

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      int line = sc.nextInt();
      int cnt = 0 ; //그룹문자 카운트
      sc.nextLine(); //개행문자 때문에 넣음
       
      for(int l =1; l <= line ; l ++ ){
          String str = sc.nextLine();
          List<String> list = new ArrayList<String>();
          
          for(int i =0; i<str.length() ;i++){
              String now = str.substring(i,i+1);
              //리스트에 있는 경우 : 앞에서 문자를 넣었음
              if(list.contains(now)){
                  String before = str.substring(i-1,i);
                  //이미 있는 문자인데 현재문자 바로 앞이 다른 문자인 경우 -> 그룹단어 아님
                  if(!before.equals(now)){
                      break;
                  }
              //리스트에 없는 경우 : 처음 나온 문자
              }else{
                  list.add(now);
              }
              
              //그룹단어 검사 마지막 문자인 경우 -> 그룹단어이므로 카운트 
              if(i+1==str.length()){
                  cnt+=1;
              }
          }
          
      }
      System.out.println(cnt);
    }
}

 

* 학습내용

1. nextInt() : 사용자 입력의 가장 마지막 개행문자(엔터, newline)를 제거하지 않는다.

nextInt() 후에 바로 nextLine()을 사용하면 개행문자를 입력받게 된다.

 

2. charAt()

다음에는 substring말고 charAt을 쓰자

반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[JAVA] 9012번 괄호  (0) 2023.03.13
[JAVA] 너의 평점은  (0) 2023.03.12
[JAVA] 크로아티아 알파벳  (0) 2023.03.11
[JAVA] 직사각형에서 탈출  (0) 2023.03.09
[JAVA] 4344번 평균은 넘겠지 문제  (0) 2023.03.09
반응형

https://www.acmicpc.net/problem/2941

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      String str = sc.nextLine();
      
      str = str.replace("dz=","a");
      str = str.replace("lj","a");
      str = str.replace("nj","a");
      str = str.replace("s=","a");
      str = str.replace("z=","a");
      str = str.replace("c=","a");
      str = str.replace("c-","a");
      str = str.replace("d-","a");
      System.out.println(str.length());
    }
}

저 문자조합을 그냥 하나의 문자로 치면 되는 거라..

제일 긴 문자 조합인 dz=부터 대충 a로 바꿔주고 길이를 세었음..

처음 시도했을때는 문자열을 맨 처음 인덱스부터 검사하면서 경우의 수를 나눠서 세는 방법으로 짰었는데,,,

원하는 결과는 제대로 나왔었는데 채점에서 틀렸다고 나와서... ㅠ.ㅠ

좀 쉬다가 하니까 이렇게 쉬운 방법이 보임...

반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[JAVA] 9012번 괄호  (0) 2023.03.13
[JAVA] 너의 평점은  (0) 2023.03.12
[JAVA] 그룹 단어 체커  (0) 2023.03.12
[JAVA] 직사각형에서 탈출  (0) 2023.03.09
[JAVA] 4344번 평균은 넘겠지 문제  (0) 2023.03.09

+ Recent posts