처음 국비 학원에 등록할 때만 해도 나는 6개월 내내 JAVA 언어만 배우는 줄 알았다. 굉장히 단순한 접근..

 

난 아직 학원에서 배운 JAVA 지식을 핥아보지도 못한 느낌인데...

순식간에 너무 많은 과목이 진행돼버렸다.

 

집에 와서 복습을 할라치면 뭐부터 공부하고 손을 대야 하는지 뒤죽박죽

그래서 오늘은 다 까먹어가는 java 기초적인 예제를 좀 해보자 해서 배열 합계를 구하는 메서드를 써봤는데,

이것도 거의 30분이 넘게 걸렸다.

그 결과물...

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
class Test {
 
    static long sum(int[] a) {
        long result = 0;
        for (int i = 0; i < a.length; i++) {
            result += a[i];
        }
        return result;
    }
 
    public static void main(String[] args) {
        int[] a = new int[3];
        Scanner scan = new Scanner(System.in);
        System.out.println("정수 입력 3개 :");
        a[0= scan.nextInt();
        a[1= scan.nextInt();
        a[2= scan.nextInt();
        scan.close();
        System.out.println("정수의 합 : " + sum(a));
    }
}
cs

JAVA의 정석 기초편 연습문제 6-16

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Exercise6_16 {
 
    public static void change(String str) {
        str += "456";
    }
    
 
    public static void main(String[] args) {
        
        String str = "ABC123";
        System.out.println(str);
        
        change(str); // 메서드 실행-종료 후 메모리에서 지워짐.
        System.out.println(str); // 실행결과 : ABC123
 
        System.out.println(change(str)); // change메서드에서 실행 된 값을 호출하여 출력 : ABC123456
    }
}
cs

 

 

실행순서

1. main메서드 안에서 String str = "ABC123"; 생성.

2. change메서드 매개변수로 메인메서드의 str이 넘어감.

3. change메서드 구현부에서 str = "ABC123456" 으로 새로 생성 되고 주소값 변경 됨.

4. change메서드 종료 후, 메서드에서 작업하던 내용들이 메모리에서 제거 됨.

5. main메서드에서 실행된 sysout(str)에서는 main안의 기존 변수였던 str의 주소값 ABC123이 출력 됨.

 

change 메서드가 사라지기 전에 출력하고 싶으면! sysout(change(str)); 로 작성한다.

sysout메서드가 change메서드를 호출하면서 change는 대기상태가 되고, sysout에서 change의 수행값을 출력한 뒤 main을 제외하고 모두 메모리에서 제거된다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class isNumberTest {
 
    static boolean isNumber(String str) {
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch > '9' || ch < '0') {
                return false;
            }
        }
        return true;
    }
 
    public static void main(String[] args) {
        String t = "1034d3";
        if (isNumber(t) == false) {
            System.out.println("숫자로만 이루어지지 않았습니다.");
        } else {
            System.out.println("숫자로만 이루어져 있습니다.");
        }
    }
}
cs

피곤에 쩔어버린 머리로 이리쓰고 저리쓰고 하다보니 작성된 메서드..

사실 완벽하게 이해된 코드가 아니다..

if (ch > '9' || ch < '0') 에서

문자를 어떻게 크기 비교했는지 그게 이해가 잘 안되는 중..

문자랑 문자랑 비교?

아스키코드 값이랑 비교해서 이루어지는건가???

일단 졸린 눈 좀 붙이고 다시 생각해봐야겠다..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Exercise6_21 {
 
    static int abs(int value) {
        int res = value > 0 ? value : -(value);
        return res;
    }
 
    public static void main(String[] args) {
        int value = 5;
        System.out.println(value + "의 절대값 : " + abs(value)); // 5
        value = -25;
        System.out.println(value + "의 절대값 : " + abs(value)); // 25
    }
}
cs

 

남들이 쉬운건 나도 쉽다.

그런데 쉽게 풀고 나면 뭔가 불안하다.

이게 맞나? 답은 잘 나오는데.... 왜 쉽게 풀렸지?

코딩도 자신감인걸까...

  • 블록태그 : 항상 새 라인에서 시작, 양 옆에 컨텐츠를 배치하지 않음
  • 인라인태그 : 블록 안에 위치, 현재 위치에 이어서 시작, 양옆에 컨텐츠 배치 가능
태그명 구분 내용
<hn></hn> 블록태그 n : 1~6 , 1이 제일 크고 6이 제일 작다.
<p></p> 블록태그 줄바꿈 없이 한 줄로 표시함. 브라우저에 맞게 자동 줄바꿈 된다. 상하여백 있음
<div></div> 블록태그 자체적인 의미 없이, 내용을 통째로 한 묶음으로 만들어 스타일을 적용할 때 주로 사용. 상하여백 없음.
<hr> 블록태그 수평선
<blockquote></blockquote> 블록태그 인용글. 다른 텍스트보다 안으로 들여써짐.
<pre></pre> 블록태그 소스에 표시한 공백이 그대로 표시 됨.
<strong> 인라인태그 경고나 주의사항 같이 중요한 내용을 강조함. (화면낭독기에서 강조되었다고 알려줌)
<b> 인라인태그 문서의 키워드처럼 단순히 굵게 표현.
<em> 인라인태그 기울인 글씨. 중요한 내용을 강조.
<i> 인라인태그 단순한 기울임체. 생각, 꿈, 기술적 용어, 다른 언어의 관용구 등에서 사용.
<q></q> 인라인태그 인용글. 다른 문장들과 구분이 되도록 따옴표가 자동 삽입된다.
<mark></mark> 인라인태그 형광펜. CSS bg-color를 통해 형광펜 색 변경 가능.
<span></span> 인라인태그 자체적인 의미 없음. 내용의 일부를 한 묶음으로 만들어 스타일을 적용 할 때 주로 사용
<figure></figure> 블록태그 설명이 필요한 대상을 figure 태그로 묶고, 설명 글은 figcaption 태그로 묶음.
(표, 이미지, 오디오, 비디오, 텍스트 등)
<figcaption></figcaption>

 

'HTML & CSS' 카테고리의 다른 글

[CSS] placeholder 글자색 바꾸기  (0) 2021.07.23
[HTML] input, textarea 태그  (0) 2021.07.23
[HTML] a, form, label 태그  (0) 2021.07.23

 

jsp 에서 구현한 화면 중 form안에 있는 정보들을 서버로 보내보자!!!!

 

form 안에 있는 각요소의 name = 전송될 파라미터

 

action

  • 전송버튼을 누르면 주소창 뒷부분이 action에 있는 경로로 바뀌고, 해당 경로로 지정되어 있는 서블릿(컨트롤러)가 요청되어 실행 됨. 
  • 이때 넘어가는 name 에 들어 있는 정보들을 "요청정보" 라고한다.

 

 

 

form의 전송방법 method

  • 전송방법이 GET일 때 URL을 통해 요청정보를 서버로 보낸다.
    - 보안에 취약 (전송되는 내용이 주소창을 통해 보인다.)
    - 데이터의 한계 (URL을 이용해 보내기때문에 많은 양의 데이터를 보낼 수 없음)
  • 전송방법이 POST일 때 요청정보는 패킷(packet)에 감싸진 상태로 전송 된다.
    - 데이터에 한계가 없음

 

form을 통해 정보를 넘길 때는 method = POST를 주로 사용한다.

method 정보가 없을 땐 GET이 기본값임.

 

패킷은 header - body 로 이루어져 있음. 

header body
client의 정보가 들어감
(ip, port 등..)
요청정보(파라미터)의 내용
(su1=1, su2=100)

 * port : 클라이언트와 서버 사이에 데이터를 주고 받을 수 있는 도로와 같은 것!

 

 

클라이언트가 보내온 정보를 식별 및 저장하기 위해 WAS(서버)는 두개의 객체를 만든다.

  • 요청 객체 : HttpServletRequest request : 패킷 모든 내용(header+body)을 담아둔다. 
  • 응답 객체 : HttpServletResponse response : 패킷중 header의 내용을 담아둔다.

 

클라이언트에서 넘어온 form parameter 받기. 

request.getParameter("su1"); 

-- request 객체의 파라미터 su1의 값을 얻는다.

별의 별 시도를 다 해보고, 버전도 낮춰보고, 다시 설치해보고

오만가지 방법으로 namespace를 만들어보려고 했지만 모두 실패했다.

 

결국 직접 코드를 붙여 넣는 것으로 해결했다..

원시적이군..

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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/테이블명?useSSL=false&amp;serverTimezone=Asia/Seoul">
        </property>
        <property name="username" value="DB계정명"></property>
        <property name="password" value="암호"></property>
    </bean>  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
    </bean>
    <mybatis-spring:scan base-package="dao패키지명"/>
</beans>
cs

'SPRING > 나의 고통(Error)' 카테고리의 다른 글

Could not set parameters for mapping  (0) 2021.07.28
Could not convert socket to TLS  (0) 2021.07.26
@GetMapping import 불가  (0) 2021.07.22
Build path entry is missing:  (0) 2021.07.21
Could not get JDBC Connection;  (0) 2021.07.11

Controller에서 @GetMapping 어노테이션이 import되지 않을 때,

pom.xml 에서 아래와 같이 프레임워크 버전을 바꿔준다. 

스프링 4.3 버전부터 사용 가능해진 어노테이션이라는데, 꼭 5.0.7이 아니라 그 상위 버전이어도 상관없을 듯 싶다.

 

1
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
cs

 

Open projects from file System 으로 프로젝트를 가져오면, Build Path Problems라고 해서 다닷다닷 에러가 발생하게 된다.

문제가 발생하는 프로젝트에서 우클릭 - Build Path - Configure Build path... 를 해보면 해당 프로젝트에 빨간불이 들어와 있는 걸 볼 수 있다.

해당 프로젝트 로컬 폴더로 가서 src - test 폴더에 아마 resources 정도만 있을텐데,

새 폴더로 java를 하나 만들어주고 이클립스에서 해당 프로젝트를 Refresh해주면 에러가 사라진다...

'SPRING > 나의 고통(Error)' 카테고리의 다른 글

Could not convert socket to TLS  (0) 2021.07.26
servlet.xml에 namespace탭이 안보일 때  (0) 2021.07.22
@GetMapping import 불가  (0) 2021.07.22
Could not get JDBC Connection;  (0) 2021.07.11
Spring - db 등록시 한글 깨짐  (0) 2021.07.11

에러메세지

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;

위와 같은 에러가 났다.

 

분명히 저녁먹기 전에는 잘 됐는데, 밥먹고 재실행을 하니 안되는 어이없는 상황 ㅠㅠ

뭐지.. 왜 잘되다가 안되는거지? ㅠㅠㅠ

한시간 가량 구글링을 거쳐

xml 파일들에 오타 난 것 있는지, mysql설정을 내가 뭘 잘못한건지 웬만한 시도를 다 해보다가 

 

 

 

MyBatis error: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.Type - Programmer Sought

 

MyBatis error: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.Type - Programmer Sought

Cause: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1). This is a magical bug. When my MyBatis statement: select u.roleId, r.roleName from role r, user u where u.roleId = r.roleId and u.userAccount = The following

www.programmersought.com

위 사이트를 접하게 됐는데,  슥 보고 엥?? 설마 이것때문에? 싶어서 나도 적용해보았는데

너무너무너무너무너무  간단한 방법으로 해결이 되었다.

 

그 간단한 방법...

root-context.xml 상단에 주석이 하나 달려 있었는데, 이걸 지우니까 실행이 된다. 하...

 

한시간동안의 스트레스에서 탈출하게 해줬으니

이 블로거한테 좋아요라도 눌러주고 싶었는데,

외국 블로그는 좋아요 시스템이 없는건지 막아놓은건지 나의 감사함을 표할 길이 없다 ㅠㅠ

 

 

주석이 문제였다면 아깐 왜 잘 됐는지,

왜 주석이 실행에 영향을 미치는건지 아직 내 배움의 수준에서는 알 길이 없지만...

 

그냥 너무 어이없었던 에러 해결 순간이었따...

'SPRING > 나의 고통(Error)' 카테고리의 다른 글

Could not convert socket to TLS  (0) 2021.07.26
servlet.xml에 namespace탭이 안보일 때  (0) 2021.07.22
@GetMapping import 불가  (0) 2021.07.22
Build path entry is missing:  (0) 2021.07.21
Spring - db 등록시 한글 깨짐  (0) 2021.07.11