스프링 설치 및 환경설정

spring.io/tools

 

Spring Tools 4 is the next generation of Spring tooling

Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.

spring.io

 

알집프로그램 삭제 후!!

 jar 파일 더블클릭 -exe 파일 설치

 

 

 


 

이클립스 내 Eclipse Marketplace에서 sts 검색하고 다운로드

 

 

 


 

이클립스에서 환경설정하기

window -> preferences -> server -> Runtime Environment에서 Add 하여 톰캣 추가

 

 

 

 

Compiler에 JDK를 1.8로 수정

 

 

General 탭-Web Browser-Chorme으로 설정하면 크롬 새창에서 결과물 확인 가능

 

 


 

 

Package explorer 에서 마우스 우클릭 properties - Server 검색해서 Tomcat 선택

 

 

Java Build Path-Libraries-Add Library-Apache Tomcat v9.0 추가

 

 

Project Facets의 Java 버전을 1.8로 수정

 

 

(만약 explorer에서 1.8버전으로 안나오면 programm files-Java에 있는 라이브러리를 추가해줘야함. properties-Java Build Path-Library탭-Add Library-Instatlled JREs-Search-C:\Program Files\Java\jdk1.8.0_251 폴더 선택)

 

 


  • server.xml에서 port를 8888로 수정

<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443"/>

 

 

 


 

폼, 클래스, 서버 등 각종 파일 연결흐름

 

New-Web Dynamic Project로 01_SpringTest 생성

 

 

 

필요한 라이브러리들을 WEB-INF - lib에 복사

 

 


 

WEB-INF 밑에 jsp 폴더 생성

 

 


jsp 폴더 내에 personForm.jsp 파일 생성하고 입력 폼 양식 채우기

 

 

  • personForm.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

</head>

<body>

<h1>개인 정보 입력</h1>

<table>

          <tr>

                   <td>이름:</td>

                   <td><input type="text" name="name"></td>

          </tr>

          <tr>

                   <td>아이디:</td>

                   <td><input type="text" name="userid" id="userid"></td>

          </tr>

          <tr>

                   <td>패스워드:</td>

                   <td><input type="password" name="pwd" id="pwd"></td>

          </tr>

          <tr>

                   <td>성별</td>

                   <td>남<input type="radio" name="gender" value="man" checked="checked">

                        여<input type="radio" name="gender" value="woman">

                   </td>

          </tr>

          <tr>

                   <td>직업:</td>

                   <td><select name="job">

                        <option value="">직업선택</option>

                        <option value="학생">학생</option>

                        <option value="회사원">회사원</option>

                        <option value="기타">기타</option>

                   </select></td>

          </tr>

</table>

     <button type="button" id="ok">확인</button>

     <button type="reset" id="clear">취소</button>

</body>

</html>


WebContent 폴더 내 (WEB-INF 폴더 바깥)에 index.jsp 생성

 

  • index.jsp

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

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="test.sp">테스트</a>

<br/>

Person 추가하기 <br/>

Person 전체보기 <br/>

</body>

</html>


web.xml 파일 내용 수정

 

  • web.xml

 

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

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>01_SpringTest</display-name>

  <servlet>

     <servlet-name>springapp</servlet-name>

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

  </servlet>

  <servlet-mapping>

     <servlet-name>springapp</servlet-name>

     <url-pattern>*.sp</url-pattern>

  </servlet-mapping>

 

  <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>

  </filter>

 

  <filter-mapping>

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

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

  </filter-mapping>

 

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

</web-app>


 

WEB-INF 폴더 내에 springapp-servlet.xml 생성 (New-Other-Spring-Sring Bean Configuration file) 

 

 

 

 


  • springapp-servlet.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:util="http://www.springframework.org/schema/util"

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

</beans>

 


 

src에 패키지 생성 (com.test.controller)

 

 

TestController.java 클래스 파일 생성

 

 

 

  • TestController.java

 

package com.test.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

public class TestController extends AbstractController{

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          // TODO Auto-generated method stub

          return new ModelAndView("WEB-INF/jsp/result.jsp");

     }

     

}


 

실행순서: index.jsp를 실행-web.xml이 실행-springapp이 실행됨-springapp-servlet.xml이 실행-test.sp를 만나면 TestController로 이동하도록 명령어를 써줘야함

 

  • springapp-serlvelt.xml에 다음과 같이 내용 추가

 

<bean name="/test.sp" class="com.test.controller.TestController"/>

 

src의 com.person.controller 패키지 내 TestController 클래스 파일이 실행됨. 그리고 result.jsp가 return됨.

 

 


 

  • index.jsp에서 person 추가하는 링크 설정

<a href="personForm.sp">Person 추가하기</a><br/>

 

  • personForm.jsp 에서 폼 액션 이동 경로 설정

 

<form action="personInsert.sp" method="post">

 

web.xml에 의해 .sp로 끝나는 파일들은 springapp-servlet.xml이 먼저 실행됨.

 

  • springapp-servlet.xml에 personForm.jsp 내용 추가

 

<bean name="/personForm.sp" class="com.person.controller.PersonForm"/>

 

src의 com.person.controller 패키지 생성 후 PersonForm.java 클래스 파일 생성하기. 이 클래스 파일이 실행됨. 그리고 personForm.jsp가 return됨.

 

 

 


 

 

sql디벨로퍼에서 scott 계정 접속-새 테이블 생성

 

 

 


 

src에 com.person.controller 패키지 생성 후 PersonDTO.java 클래스 파일 생성

 

getter, setter 생성

 

  • PersonDTO.java

 

package com.person.model;

public class PersonDTO {

     //getter, setter

     private String id;

     private String name;

     private String gender;

     private String password;

     private String job;

     public String getId() {

          return id;

     }

     public void setId(String id) {

          this.id = id;

     }

     public String getName() {

          return name;

     }

     public void setName(String name) {

          this.name = name;

     }

     public String getGender() {

          return gender;

     }

     public void setGender(String gender) {

          this.gender = gender;

     }

     public String getPassword() {

          return password;

     }

     public void setPassword(String password) {

          this.password = password;

     }

     public String getJob() {

          return job;

     }

     public void setJob(String job) {

          this.job = job;

     }

     

}

 

  • PersonDAO.java 인터페이스 파일 생성

package com.person.model;

import java.util.List;

public interface PersonDAO {

     //추가

     public void personInsert(PersonDTO person);

     //전체보기

     public List<PersonDTO> findAll();

     //수정하기

     public void personUpdate(PersonDTO person);

     //삭제하기

     public void personDelete(String id);

     //상세보기

     public PersonDTO findById(String id);

}

 

 


 

  • PersonDAOImpl.java 클래스 파일 생성 하고 PersonDAO를 implements함

 

 

package com.person.model;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
public class PersonDAOImpl implements PersonDAO{
    
     //추가하기
     public void personInsert(PersonDTO person) {
          String sql="insert into person values(?,?,?,?,?)";
          Object[] param=new Object[] {
               person.getId(),person.getName(),person.getPassword(),person.getGender(),
              person.getJob()
          };
          template.update(sql,param);
     }
     //전체보기
     public List<PersonDTO> findAll() {
          // TODO Auto-generated method stub
          return null;
     }
     //수정하기
     public void personUpdate(PersonDTO person) {
          // TODO Auto-generated method stub
          
     }
     //삭제하기
     public void personDelete(String id) {
          // TODO Auto-generated method stub
          
     }
     //상세보기
     public PersonDTO findById(String id) {
          // TODO Auto-generated method stub
          return null;
     }
}

 

 


 

  • springapp-servlet.xml에 추가하기 내용을 추가

<bean name="personInsert.sp" class="com.person.controller.PersonInsert"><property name="dao" ref="dao"></property></bean>

 

com.person.controller에 PersonInsert.java 클래스 파일 추가

 

 

 


 

Servers의 context.xml을 META-INF에 붙여넣기. Resource내용 추가하기

 

  • context.xml

<Resource name="jdbc/spring" auth="Container"

  type="javax.sql.DataSource"

  driverClassName="oracle.jdbc.driver.OracleDriver"

  url="jdbc:oracle:thin:@localhost:1521:xe"

  username="scott" password="1234"

  maxTotal="20" maxIdle="20"

  maxWaitMillis="-1"

  />

 


 

  • springapp-servlet.xml에 내용 추가

 

<!-- DB설정 -->

<bean id="ds" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName">

     <value>jdbc/spring</value>

</property>

<property name="resourceRef" value="true"></property>

</bean>

<!-- spring template 설정 -->

<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">

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

</bean>

<!-- dao 설정 -->

<bean id="dao" class="com.person.model.PersonDAOImpl">

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

</bean>



<!-- 추가하기 -->

<bean name="/personInsert.sp" class="com.person.controller.PersonInsert">

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

</bean>


 

  • dao 설정을 해줘야하므로 PersonDAOImpl.java에 내용 추가

 private JdbcTemplate template;

     

     //setter

     public void setTemplate(JdbcTemplate template) {

          this.template = template;

     }


 

  • PersonInsert.java에 내용 추가

 

package com.person.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

import com.person.model.PersonDAOImpl;

import com.person.model.PersonDTO;

public class PersonInsert extends AbstractController{

     private PersonDAOImpl dao;

     

     //setter

     public void setDao(PersonDAOImpl dao) {

          this.dao = dao;

     }

     

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          

          PersonDTO person=new PersonDTO();

          person.setGender(req.getParameter("gender"));

          person.setId(req.getParameter("id"));

          person.setJob(req.getParameter("job"));

          person.setName(req.getParameter("name"));

          person.setPassword(req.getParameter("password"));

          dao.personInsert(person);

          return null;

     }

}


 

전체보기

  • index.jsp에 전체보기 링크 추가 

 

<a href="personList.sp">Person 전체보기</a><br/>

 

  • springapp-server.xml에 전체보기 추가

<!-- 전체보기 -->

<bean name="/personList.sp" class="com.person.controller.PersonList">

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

</bean>
  • PersonList.java

package com.person.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

import com.person.model.PersonDAOImpl;

import com.person.model.PersonDTO;

public class PersonList extends AbstractController{

     private PersonDAOImpl dao;

          

     //setter

     public void setDao(PersonDAOImpl dao) {

          this.dao = dao;

     }

     

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          // TODO Auto-generated method stub

          ModelAndView mv=new ModelAndView();

          List<PersonDTO> userlist=dao.findAll();

          mv.addObject("userlist",userlist);

          mv.setViewName("WEB-INF/jsp/personList.jsp");

          return mv;

     }

     

}

 

  • PersonDAOImpl.java에 전체보기 내용 수정

   

 //전체보기

     public List<PersonDTO> findAll() {

          String sql="select * from person";

          List<PersonDTO> personlist=template.query(sql, new RowMapper<PersonDTO>() {

              @Override

              public PersonDTO mapRow(ResultSet rs, int arg1) throws SQLException {

                   PersonDTO user=new PersonDTO();

                   user.setGender(rs.getString("id"));

                   user.setId(rs.getString("id"));

                   user.setJob(rs.getString("job"));

                   user.setName(rs.getString("name"));

                   user.setPassword(rs.getString("password"));

                   return user;

              }

          });

          return personlist;

     }
  • personList.jsp 생성후 내용 입력 (lib에 jstl이 있음)

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

    pageEncoding="UTF-8"%>

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

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="personForm.sp">추가하기</a>/전체보기<br/>

<c:forEach items="${userlist}" var="user">

이름: ${user.name}<br/>

아이디: ${user.id}<br/>

성별: ${user.gender}<br/>

직업: ${user.job}<br/><br/>

</c:forEach>

</body>

</html>

 

  • 폼 양식 입력후 바로 전체보기 뜨도록 PersonInsert.java 내용 수정

 

return new ModelAndView("redirect:personList.sp");

 

상세보기가 가능하도록 전체보기 아이디에 링크를 걸기

 

  • personList.jsp

 

아이디: <a href="personView.sp?id=${user.id}">${user.id}</a><br/>

 

  • springapp-server.xml에 상세보기 추가

 

<!-- 상세보기 -->

<bean name="/personView.sp" class="com.person.controller.PersonView">

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

</bean>

 

  • PersonView.java 클래스 파일 생성

 

package com.person.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

import com.person.model.PersonDAOImpl;

import com.person.model.PersonDTO;

public class PersonView extends AbstractController{

     private PersonDAOImpl dao;

     //setter

     public void setDao(PersonDAOImpl dao) {

          this.dao = dao;

     }

     

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          String id=req.getParameter("id");

          PersonDTO person=dao.findById(id);

          ModelAndView mv=new ModelAndView();

          mv.addObject("user",person);

          mv.setViewName("WEB-INF/jsp/personView.jsp");

          return mv;

     }

}



PersonDAOImpl.java에 상세보기 내용 추가



//상세보기

     public PersonDTO findById(String id) {

          String sql="select * from person where id='"+id+"'";

          PersonDTO person=template.queryForObject(sql, new RowMapper<PersonDTO>() {

              @Override

              public PersonDTO mapRow(ResultSet rs, int arg1) throws SQLException {

                   PersonDTO user=new PersonDTO();

                   user.setGender(rs.getString("gender"));

                   user.setId(rs.getString("id"));

                   user.setJob(rs.getString("job"));

                   user.setName(rs.getString("name"));

                   user.setPassword(rs.getString("password"));

                   return user;

              }

          });

          return person;

     }

 

 

  • personView.jsp 내용 쓰기

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

    pageEncoding="UTF-8"%>

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

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

이름: ${user.name}<br/>

아이디: ${user.id}<br/>

성별: ${user.gender}<br/>

직업: ${user.job}<br/><br/>
<input type="button" value="수정" onclick="location.href='updateForm.sp?id=${user.id}'">
<input type="button" value="삭제" onclick="location.href='personDelete.sp?id=${user.id}'">
</body>

</html>




 

 

 

삭제하기

  • springapp-server.xml에 삭제하기 내용 추가

 

<!-- 삭제하기 -->

<bean name="/personDelete.sp" class="com.person.controller.PersonDelete">

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

</bean>

 

  • com.person.controller 패키지에 PersonDelete.java 클래스 파일 생성

 

package com.person.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

import com.person.model.PersonDAOImpl;

import com.person.model.PersonDTO;

public class PersonList extends AbstractController{

     private PersonDAOImpl dao;

          

     //setter

     public void setDao(PersonDAOImpl dao) {

          this.dao = dao;

     }

     

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          // TODO Auto-generated method stub

          ModelAndView mv=new ModelAndView();

          List<PersonDTO> userlist=dao.findAll();

          mv.addObject("userlist",userlist);

          mv.setViewName("WEB-INF/jsp/personList.jsp");

          return mv;

     }

     

}





  • PersonDAOImpl.java에 삭제하기 내용 추가

//삭제하기

     public void personDelete(String id) {

          String sql="delete from person where id='"+id+"'";

          template.update(sql);

     }

 

 


수정하기

 

  • springapp-server.xml 에 내용 추가

 

<!-- 수정하기 -->

<bean name="/personUpdate.sp" class="com.person.controller.PersonUpdate">

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

</bean>

 

 

  • com.person.controller 패키지 내에 PersonUpdate.java 파일 생성

 

package com.person.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

import com.person.model.PersonDAOImpl;

import com.person.model.PersonDTO;

public class PersonUpdate extends AbstractController{

     private PersonDAOImpl dao;

     

     //setter

     public void setDao(PersonDAOImpl dao) {

          this.dao = dao;

     }

     

     @Override

     protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {

          PersonDTO person=new PersonDTO();

          person.setGender(req.getParameter("gender"));

          person.setJob(req.getParameter("job"));

          person.setName(req.getParameter("name"));

          person.setPassword(req.getParameter("password"));

          person.setId(req.getParameter("id"));

          dao.personUpdate(person);

          return new ModelAndView("redirect:personList.sp");

     }

}

 

 

  • PersonDAOImpl.java에 수정하기 부분 수정

 

//수정하기
	public void personUpdate(PersonDTO person) {
		String sql="update person set job=?, gender=?, name=?, password=? where id=?";
		Object[] param=new Object[] {
				person.getJob(),person.getGender(),person.getName(),person.getPassword(),person.getId()
		};
		template.update(sql, param);
		
	}


 

'Learning > Spring' 카테고리의 다른 글

Maven (JDBC template 방식)  (0) 2020.10.13
Mybatis 회원가입  (0) 2020.10.08
@Service 추가 간단한 주소록  (0) 2020.10.08
간단한 회원가입 실습  (0) 2020.10.06
간단한 주소록 만들기 (스프링 컨테이너)  (0) 2020.10.06

+ Recent posts