로그인 구현(1)

2024. 6. 19. 09:50개인 프로젝트

로그인 이후 동작은 이렇게 진행될 예정이다.

 

참고사항 

1. mysql DB를 사용

2. 로그인 이후 게시판 구현 + 파일 업로드 까지 진행할 예정이다.

3. mysql 실행쿼리

:

CREATE DATABASE woncoding DEFAULT CHARACTER SET utf8;

CREATE TABLE userinfo (

userid VARCHAR(50) NOT NULL PRIMARY KEY,

password VARCHAR(50) NOT NULL,

name VARCHAR(50) NOT NULL,

email VARCHAR(50),

join_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

 

insert into member (userid,passwd,name,email)

values ('아이디','비밀번호','이름','이메일');

 

1. root-context.xml 을 아래와 같이 작성한다.

<?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:context="http://www.springframework.org/schema/context"

xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://mybatis.org/schema/mybatis-spring

http://mybatis.org/schema/mybatis-spring-2.0.xsd">

 

 

 

<!--classpath:에 나의 db정보를 입력해놓는다. 그럼 이로코롬 가져올 수 있음. 그냥 생성안하고 바로 입력해도 됨.

-->

 

<context:property-placeholder location="classpath:application.properties" />

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">

<property name="driverClassName" value="${spring.datasource.driverClass}" />

<property name="url" value="${spring.datasource.url}" />

<property name="username" value="${spring.datasource.username}" />

<property name="password" value="${spring.datasource.password}" />

 

</bean>

 

 

 

<!-- (xml과 연결시키는) *Mapper.java 파일 등록-->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.wonlee.spring.mapper" />

<property name="annotationClass" value="org.mybatis.spring.annotation.MapperScan"/>

<property name="sqlSessionTemplateBeanName" value="sqlSession"/>

</bean>

 

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<property name="mapperLocations">

<list>

<value>classpath:com/wonlee/spring/mapper/UserMapper.xml</value>

</list>

</property>

</bean>

 

<!-- sqlSession 빈 등록 template은 sql 실행만 담당한다. -->

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

<constructor-arg ref="sqlSessionFactory" />

</bean>

 

 

</beans>

 

 

1.2 DB 정보가 들어있는 application.properties를 작성한다. resource 바로 아래에 위치시킨다.

spring.datasource.driverClass=org.mariadb.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스이름?useUnicode=true&characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=비밀번호

 

2. servlet-context.xml 을 아래와 같이 작성한다.

<?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:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:beans="http://www.springframework.org/schema/beans"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

<!-- 컴포넌트 스캔 -->

<context:component-scan base-package="com.wonlee.spring"/>

 

 

<!-- @Controller에 요청을 보내기위한 핸들러매핑과 핸들러댑터를 빈으로 등록함. commpnent-scan 명시하면 이태그 포함 안해도됨 -->

<mvc:annotation-driven/>

 

<mvc:default-servlet-handler />

 

 

<!-- Process annotations on registered beans like @Autowired @Qualifier -->

<context:annotation-config/>

 

 

<!-- 이건 맨 앞에 써야함. -->

<bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

 

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

<property name="messageConverters">

<list>

<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

<property name="supportedMediaTypes">

<list>

<value>text/html;charset=UTF-8</value>

<value>application/json;charset=UTF-8</value>

</list>

</property>

</bean>

</list>

</property>

</bean>

 

<!--한글 깨짐-->

<mvc:annotation-driven>

<mvc:message-converters>

<bean class="org.springframework.http.converter.StringHttpMessageConverter">

<property name="supportedMediaTypes">

<list>

<value>text/plain;charset=UTF-8</value>

<value>text/html;charset=UTF-8</value>

<value>application/json;charset=UTF-8</value>

</list>

</property>

</bean>

</mvc:message-converters>

</mvc:annotation-driven>

</beans>

 

 

3. web.xml 을 아래와 같이 작성한다.

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

 

 

<display-name>Spring MVC</display-name>

 

<!-- Root context -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/root-context.xml</param-value>

</context-param>

 

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

 

<!-- servlet context -->

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/servlet-context.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

 

</servlet>

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

 

<!-- encoding filter -->

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

 

</web-app>

 

 

4. pom.xml을 아래와 같이 작성한다.

 

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>

<artifactId>mvcproject</artifactId>

<packaging>war</packaging>

<version>1.0-SNAPSHOT</version>

<name>mvcproject Maven Webapp</name>

<url>http://maven.apache.org</url>

 

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>5.3.9</version>

</dependency>

 

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-websocket</artifactId>

<version>5.3.9</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-messaging</artifactId>

<version>5.3.9</version>

</dependency>

 

 

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.27</version>

</dependency>

 

<dependency>

<groupId>org.mariadb.jdbc</groupId>

<artifactId>mariadb-java-client</artifactId>

<version>2.7.2</version>

</dependency>

 

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-dbcp2</artifactId>

<version>2.9.0</version>

</dependency>

 

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.6</version>

</dependency>

 

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.2</version>

</dependency>

 

 

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.18.0</version>

</dependency>

 

 

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependency>

 

 

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>4.0.1</version>

</dependency>

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>jsp-api</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>1.2</version>

<scope>runtime</scope>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>5.3.9</version>

<scope>test</scope>

</dependency>

 

 

<dependency>

<groupId>org.bgee.log4jdbc-log4j2</groupId>

<artifactId>log4jdbc-log4j2-jdbc4</artifactId>

<version>1.16</version>

</dependency>

 

<!--plupload-->

 

 

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.4</version>

</dependency>

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>2.11.0</version>

</dependency>

 

 

<!-- Log4j -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.32</version>

</dependency>

 

 

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

 

<!-- 로깅 구현체, 예를 들어 Logback 사용하는 경우 -->

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>1.2.6</version>

</dependency>

 

<!--ResponseBody -->

 

 

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.13.0</version>

</dependency>

 

 

</dependencies>

<build>

<finalName>mvcproject</finalName>

</build>

</project>

 

 

<위 소개된 파일 디렉토리 확인>

 

스프링 초기 설정을 끝마쳤으니, 다음은 구현 소스를 공개하겠다.

링크: https://won-coding-051.tistory.com/28