Spring

[SPRING] spring 특징, framework란?, 프로젝트 처음 만들었을 때 설정값

onnnzeoz 2023. 3. 29. 19:05

spring 특징

의존성 주입

: 갈아끼울때 데미지가 적다

bean이 중간다리 역할을 해줌, 그래서 db 설정할 때 서버나 소스 건들이지 않고 servlet-context.xml에 있는 bean 코드만 건들이면 되니까

이런식으로,

특정한 클래스를 bean의 형태로 저장하는 것을 의존성 주입이라고 함

사용할 클래스를 바꾸고싶으면 이 bean에서만 바꾸면 되니까 소스를 뜯어고칠 필요 없이 느슨한 결합 가능

 

제어역행

: 스프링(컨테이너)이 사용자를 호출 ->근데 이게 빈으로 등록된 놈 애들 위주로 간다

return 값으로 "home" 이렇게 줄 때 .jsp 등 앞뒤로 붙여주는 내용은 우리가 호출한적없음, 그냥 설정만 한거지

갖다쓴거는 스프링이 판단해서 알아서 한거임 

mybatis도 설정만 한건데 스프링이 혼자 알아서 다 했음 -> 제어역행

bean에다 등록만 해놓으면 1. 알아서 해주고 2. 소스 건들 필요도 없음 

 

framework란?

framework:일을 할수있는 틀, 어떤 작업을 하는 절차와 그때 필요한 도구들(ex 손님이 오면 여기서 손님을 받고, 커피를 내리고 얼음을 담고 등, 위치도 지정해주고 어떤 도구 서야하는지 알려줌)

mybatis도 라이브러리가 필요하잖아 mybatis도 프레임워크임

 

라이브러리:쓸수있는 툴

 

include : 얘를 수행하면 자동으로 따라오는 

로그아웃은 선택, 로그아웃을 하면 로그인을 할수도있고 안할수도 있어

리스트는 회원리스트임

이 리스트에서 삭제를 할수도있고 상세보기를 할수도있어

삭제를하면 로그인체크를  자동으로 함, 로그인이 되어있으면 삭제를 할거거든,

상세보기를에서 수정을 할 수도 있고 안 할 수도 있음 수정이나 상세보기를 할 때는 로그인체크를 자동으로 할거임 

가입은 거기에서 끝임

 


프로젝트 처음 만들었을 때 (한글깨짐 방지 + 자바 버전 바꾸기)

1. 프로퍼티즈에서 facet설정 (자바를 1.8로)

2. 폼xml에서 두가지 바꾸기 

 

 

 

3. web.xml에 넣기

4. pom.xml에 라이브러리 추가

<!-- 필요 라이브러리 -->
				<!--  jdbc -->
				<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
				<dependency>
				    <groupId>org.mariadb.jdbc</groupId>
				    <artifactId>mariadb-java-client</artifactId>
				    <version>2.7.2</version>
				</dependency>
				<!-- common-dbcp -->
				<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
				<dependency>
				    <groupId>commons-dbcp</groupId>
				    <artifactId>commons-dbcp</artifactId>
				    <version>1.4</version>
				</dependency>
				
				<!--  spring-jdbc -->
				<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
				<dependency>
				    <groupId>org.springframework</groupId>
				    <artifactId>spring-jdbc</artifactId>
				    <version>4.3.14.RELEASE</version>
				</dependency>
				
				
				<!--  mybatis -->
				<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
				<dependency>
				    <groupId>org.mybatis</groupId>
				    <artifactId>mybatis</artifactId>
				    <version>3.4.6</version>
				</dependency>
				
				
				<!--  mybatis-spring -->
				<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
				<dependency>
				    <groupId>org.mybatis</groupId>
				    <artifactId>mybatis-spring</artifactId>
				    <version>1.3.2</version>
				</dependency>

 

5. 디비 연결하기 (servlet.context 에다가)

전에 패키지 만들기 (controller, dao,dto,service 등)

여기서 value에 해당하는 classpath:kr/co/gudi/member/dao/*.xml

같은 경로들 잘 확인해야함

<!-- 디비연결할거임 -->
	<!--  필요한거 1. data source -->
	<beans:bean name = "datasource" class="org.apache.commons.dbcp.BasicDataSource">
	<!-- org.apache.commons.dbcp.BasicDataSource를 복사해서 datasource에 넣는다
	객체화라고 생각해 -->
		<beans:property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
		<beans:property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
		<!-- 컴퓨터환경바뀔때 url주의해야함 -->
		<beans:property name="username" value="web_user"/>
		<beans:property name="password" value="pass"/>
	</beans:bean>
	
	
	<!-- 2. mybatis 설정 -->
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 이 클래스엔 속성이 들어갈건데, 1. 연결할 DB정보 -->
		<beans:property name="dataSource" ref="datasource"/>
		<!-- 2. 쿼리문이 있을 장소 -->
		<beans:property name="mapperLocations" value="classpath:kr/co/gudi/member/dao/*.xml"/>
	</beans:bean>
	
	<!-- 3. mybatis 사용영역 -->
	<!-- mybatis를 별다른 코드없이 사용할 수 있는 어노테이션 등록 -->
	<mybatis-spring:scan base-package="kr.co.gudi.member.dao"/>

 

저기에 에러나면 namespaces에서 등록안해준거임 (밑)

500뜰 때

혹시 mapper에 링크 이상하진 않은지 확인해보기


안봐도 되는 부분

dao에서 몇개의 로우가 업뎃됐는지 갯수나옴 서비스에서 컨트롤러로보내고 그걸 담아서 view로 보냄

 

 


select 했는데 

[kr.co.gudi.member.dto.MemberDTO@8ef6d22, kr.co.gudi.member.dto.MemberDTO@5a4a7042, kr.co.gudi.member.dto.MemberDTO@406455d3, kr.co.gudi.member.dto.MemberDTO@6f52bd40]

 

이렇게 뜬다면???

아무것도 없어서 그런거임 ! ㅋㅋ 그 페이지의 body에 뭘넣으셈

 

 

loginbox는 main.jsp에서 불러서 쓸ㅇ거임(include) 거기엔이미 제이쿼리가 불러져있음

 

sesison에 값들을 저장한거??

 

밑에 이거 확인해보기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<div id="login"></div>
<script>
   var loginId = "${sessionScope.loginId}" //sessionScope. 뒤에 원하는 속성 쓰기
   if(loginId ==""){
      alert("로그인이 필요한 서비스 입니다.");
      location.href ="./";
   }else{
      var content = '안녕하세요 ${sessionScope.loginId} 님! <a href="logout">[로그아웃]</a>';
      $("#login").html(content); // a태그 빼고 넣기 때문에 html 로 넣어줌
   }
</script>

 

서비스는 다오한테 

서비는 그대로 컨트롤러전달 컨트롤러는 그거 모델에 실어서 보내면 끝

 

 

detail.jsp 이동하면 보이는 페이지

id는 pk니까 readonly 걸어주고

 

 

마이바티스를 어떤 영역에서 사용할건지 ? 뭔솔

dao는 인터페이스에 불과 xml에 연결해주는 역할

물음표 대응할때 걔네 파라미터 타입이 뭐냐 -> hashmap

hashmap에서 찾아올 값들이 뭐냐 -> #이 붙은애들