목차
web project 만들기
pom.xml에 packing과 lib 올리기
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gimhae</groupId>
<artifactId>day45</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<spring-version>3.1.4.RELEASE</spring-version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
<!-- SPRING -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
<build>
<finalName>day44</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
기존 프로젝트에 webapp 폴더가 생긴다.
web.xml을 만들고 Maven 을 업데이트한 뒤 Configure에서 Maven Project로 챼ㅜㅍㄷㄳ gksek.
schema 정의 [web.xml]
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
<servlet>
<servlet-name>sts44</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlets/sts44-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>sts44</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
sts44-servlet.xml
sts44-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="com.mysql.cj.jdbc.MysqlDataSource">
<property name="URL" value="jdbc:mysql://localhost:3306/xe"/>
<property name="user" value="scott"/>
<property name="password" value="tiger"/>
</bean>
<bean id="empDao" class="com.gimhae.emp.model.EmpDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- handler mapping -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/index.do">
<value>index</value>
</entry>
<entry key="/intro.do">
<value>intro</value>
</entry>
<entry key="/emp/list.do">
<value>list</value>
</entry>
<entry key="/emp/add.do">
<value>add</value>
</entry>
<entry key="/emp/insert.do">
<value>insert</value>
</entry>
</map>
</property>
</bean>
<bean id="index"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="index"/>
</bean>
<bean id="intro"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="intro"></property>
</bean>
<bean id="list"
class="com.gimhae.emp.controller.ListController">
<property name="empDao" ref="empDao"></property>
</bean>
<bean id="add"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="emp/add"/>
</bean>
<bean id="insert"
class="com.gimhae.emp.controller.InsertController">
<property name="empDao" ref="empDao"/>
</bean>
<!-- view resolver -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="aroundLog" class="com.gimhae.aop.AroundLog"></bean>
<bean id="pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="patterns">
<list>
<value>.*pull.*</value>
</list>
</property>
</bean>
<bean id="pointcutAdvisor"
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="aroundLog"></property>
<property name="pointcut" ref="pointcut"></property>
</bean>
<bean id="beanNameAutoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="empDao"></property>
<property name="interceptorNames">
<list>
<value>pointcutAdvisor</value>
</list>
</property>
</bean>
</beans>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@include file="template/head.jspf" %>
</head>
<body>
<%@include file="template/menu.jspf" %>
<div class="jumbotron">
<h2>환영합니다.</h2>
</div>
<%@include file="template/footer.jspf" %>
</body>
</html>
intro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@include file="template/head.jspf" %>
</head>
<body>
<%@include file="template/menu.jspf" %>
<div class="text-center">
<img alt="" src="https://www.inje.ac.kr/kor/assets/images/sub/gimhae-campus-1.jpg">
</div>
<%@include file="template/footer.jspf" %>
</body>
</html>
template/head.jspf
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="root" value="${pageContext.request.contextPath}"></c:set>
<link rel="stylesheet" type="text/css" href="${root }/css/bootstrap.min.css">
<script type="text/javascript" src="${root }/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="${root }/js/bootstrap.min.js"></script>
template/menu.jspf
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="${root }/index.do">인제대학교</a>
<ul class="nav navbar-nav">
<li><a class="active" href="${root }/index.do">home</a></li>
<li><a href="${root }/intro.do">intro</a></li>
<li><a href="${root }/emp/list.do">emp</a></li>
<li><a href="${root }/login/login.do">login</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
template/footer.jspf
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
</div>
emp/list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@include file="../template/head.jspf" %>
</head>
<body>
<%@include file="../template/menu.jspf" %>
<h2 class="page-header">목록</h2>
<table class="table">
<thead>
<tr>
<td>사번</td>
<td>이름</td>
<td>금액</td>
<td>날짜</td>
</tr>
</thead>
<tbody>
<c:forEach items="${list }" var="bean">
<tr>
<td><a href="detail.do?idx=${bean.empno }">${bean.empno }</a></td>
<td><a href="detail.do?idx=${bean.empno }">${bean.ename }</a></td>
<td><a href="detail.do?idx=${bean.empno }">${bean.pay }</a></td>
<td><a href="detail.do?idx=${bean.empno }">${bean.hiredate }</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<%@include file="../template/footer.jspf" %>
</body>
</html>
com.gimhae.emp.model
EmpVo.java (Dto)
package com.gimhae.emp.model;
public class EmpVo {
private int empno,pay;
private String ename;
private LocalDate hiredate;
static class Builder{
int empno,pay;
String ename;
LocalDate hiredate;
public Builder empno(int empno) {
this.empno=empno;
return this;
}
public Builder pay(int pay) {
this.pay=pay;
return this;
}
public Builder ename(String ename) {
this.ename=ename;
return this;
}
public Builder hiredate(java.sql.Date hiredate) {
this.hiredate=hiredate.toLocalDate();
return this;
}
public EmpVo buid() {
return new EmpVo(this);
}
}
public EmpVo() {
}
public EmpVo(Builder builder) {
this.empno=builder.empno;
this.ename=builder.ename;
this.pay=builder.pay;
this.hiredate=builder.hiredate;
}
public static Builder builder() {
return new Builder();
}
public int getEmpno() {
return empno;
}
public int getPay() {
return pay;
}
public String getEname() {
return ename;
}
public LocalDate getHiredate() {
return hiredate;
}
@Override
public String toString() {
return "EmpVo [empno=" + empno + ", pay=" + pay + ", ename=" + ename + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + empno;
result = prime * result + ((ename == null) ? 0 : ename.hashCode());
result = prime * result + pay;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
EmpVo other = (EmpVo) obj;
if (empno != other.empno)
return false;
if (ename == null) {
if (other.ename != null)
return false;
} else if (!ename.equals(other.ename))
return false;
if (pay != other.pay)
return false;
return true;
}
}
EmpDao.java (Interface)
package com.gimhae.emp.model;
public interface EmpDao {
List<EmpVo> pullList();
EmpVo getList(int pk);
void addList(String ename,int pay);
int setList(String ename,int pay,int pk);
int rmList(int pk);
}
EmpDaoImpl.java (implement EmpDao)
package com.gimhae.emp.model;
public class EmpDaoImpl extends JdbcDaoSupport implements EmpDao{
RowMapper<EmpVo> rowMapper=new RowMapper<EmpVo>() {
@Override
public EmpVo mapRow(ResultSet rs, int rowNum) throws SQLException {
return EmpVo.builder()
.empno(rs.getInt("empno"))
.ename(rs.getString("ename"))
.pay(rs.getInt("pay"))
.hiredate(rs.getDate("hiredate"))
.build();
}
};
@Override
public List<EmpVo> pullList() {
String sql="select * from emp38 order by empno";
return getJdbcTemplate().query(sql, rowMapper);
}
@Override
public EmpVo getList(int pk) {
return null;
}
@Override
public void addList(String ename, int pay) {
String sql="insert into emp38 (ename,pay,hiredate) values (?,?,now())";
getJdbcTemplate().update(sql,ename,pay);
}
@Override
public int setList(String ename, int pay, int pk) {
return 0;
}
@Override
public int rmList(int pk) {
return 0;
}
}
ListController
package com.gimhae.emp.controller;
public class ListController implements Controller {
EmpDao empDao;
public void setEmpDao(EmpDao empDao) {
this.empDao = empDao;
}
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav=new ModelAndView();
mav.addObject("list", empDao.pullList());
mav.setViewName("emp/list");
return mav;
}
}
'100일 챌린지 > 빅데이터기반 인공지능 융합 서비스 개발자' 카테고리의 다른 글
Day 46 - Spring ver 3. 프로젝트 만들기 (1) | 2024.09.30 |
---|---|
Day 45 - spring ver 2.x 문법 프로젝트 완성형 (0) | 2024.09.27 |
Day 44 - DI, Logging, AOP (0) | 2024.09.26 |
Day 43 - Spring 사용하기 (0) | 2024.09.25 |
Day 42 - Spring 사용하기 (0) | 2024.09.24 |