<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.multi</groupId>
<artifactId>erp</artifactId>
<name>erp</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.2.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.7.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- spring jdbc -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<!-- HikariCP (커넥션풀을 위한라이브러리)-->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!-- tiles라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-servlet -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.8</version>
</dependency>
<!-- dto를 편하게 사용하기 위한 라이브러리(롬복) -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- mybatis 사용을 위한 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<!-- 이미지파일,css,js등 리소스 경로 -->
<resources mapping="/resources/**" location="/resources/" />
<resources mapping="/images/**" location="/WEB-INF/static/images/" />
<resources mapping="/common/css/**" location="/WEB-INF/static/common/css/" />
<resources mapping="/common/js/**" location="/WEB-INF/static/common/js/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/" />
<beans:property name="suffix" value=".jsp" />
<beans:property name="order" value="2"/>
</beans:bean>
<!-- annotation을 사용하기 위해서 스프링 IoC컨테이너가 스캔할 패키지 등록 -->
<context:component-scan base-package="com.multi.erp" />
<context:component-scan base-package="main"/>
<context:component-scan base-package="test"/>
<!-- =====================스프링jdbc연동을 위해서 필요한 라이브러리===================== -->
<!-- jdbc에서 DriverManager방식으로 커넥션을 생성해서 관리(요청이 들어오면 커넥션을 만들어서 넘겨주는 방식) -->
<!-- <beans:bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<beans:property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
<beans:property name="username" value="erp"/>
<beans:property name="password" value="erp"/>
</beans:bean> -->
<!-- 커넥션풀을 위한 설정정보 -->
<beans:bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<beans:property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
<beans:property name="username" value="erp"/>
<beans:property name="password" value="erp"/>
<beans:property name="maximumPoolSize" value="15"/>
</beans:bean>
<beans:bean id="ds" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<beans:constructor-arg ref="hikariConfig"/>
</beans:bean>
<!-- sql을 실행할 수 있는 기능을 제공하는 클래스 -->
<beans:bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<beans:constructor-arg ref="ds"/>
</beans:bean>
<!-- ==========tiles를 기반으로 뷰정보를 만들수있도록 ViewResolver등록========== -->
<!-- 1. tiles설정파일을 스프링 내부에서 인식할 수 있도록 등록 -->
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/**/*-tiles.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
<!-- 2. tiles기반으로 뷰를 만들수있도록 ViewResolver등록 -->
<beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
<beans:property name="order" value="1"/>
</beans:bean>
<!--===============================MyBatis사용을 위해서 필요한 라이브러리============================== -->
<beans:bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="ds"/>
<beans:property name="configLocation" value="/WEB-INF/config/mybatis-config.xml"/>
</beans:bean>
<!-- MyBatis의 핵심클래스(sql을 실행하기 위한 기능을 제공) -->
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg ref="sessionFactory"/>
</beans:bean>
</beans:beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="indexTemplate" template="/WEB-INF/layout/index.jsp">
<put-attribute name="top" value="/WEB-INF/include/top.jsp"/>
<put-attribute name="content" value="/WEB-INF/include/mainContent.jsp"/>
</definition>
<definition name="mainTemplate" template="/WEB-INF/layout/mainLayout.jsp">
<put-attribute name="top" value="/WEB-INF/include/top.jsp"/>
<put-attribute name="menu" value="/WEB-INF/menu/pub_menu.jsp"/>
<put-attribute name="content" value="/WEB-INF/emp/login.jsp"/>
</definition>
<definition name="index" extends="indexTemplate"></definition>
</tiles-definitions>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- MyBatis내부에서 사용할 DTO와 Mapper를 등록 -->
<typeAliases>
<typeAlias type="com.multi.erp.board.BoardDTO" alias="board"/>
<typeAlias type="com.multi.erp.member.MemberDTO" alias="member"/>
</typeAliases>
<mappers>
<mapper resource="mapper/board.xml"/>
<mapper resource="mapper/member.xml"/>
</mappers>
</configuration>
http://localhost:8089/erp/board/list?category=all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.multi.erp.board">
<select id="selectall" resultType="board">
select * from tbboard
</select>
<select id="categorySelect" parameterType="String" resultType="board">
select * from tbboard where category=#{category}
</select>
<!-- #{}로 변수를 연결하면 PreparedStatement의 ?와 연결 -->
<select id="insert" parameterType="board">
insert into tbboard
values(tbboard_seq.nextval, #{id}, #{title}, #{content}, sysdate, #{category})
</select>
<select id="search" parameterType="String" resultType="board">
select * from tbboard where title like '%' || #{title} || '%'
</select>
<select id="read" parameterType="String" resultType="board">
select * from tbboard where board_no = #{board_no}
</select>
<select id="delete" parameterType="String">
delete from tbboard where board_no = #{board_no}
</select>
<select id="update" parameterType="board">
update tbboard
set category = #{category}, title = #{title}, content = #{content}
where board_no = #{board_no}
</select>
<!-- where절을 태그로 표현할 수 있다. 조건이 있는 경우는 where를 생성하고
조건이 없는 경우는 where태그가 추가되지 않도록 처리 -->
<select id="dynamicSearch" parameterType="Map" resultType="board">
select * from tbboard
<where>
<if test="tag=='title' and data!=''">
title like '%' || #{data} || '%'
</if>
<if test="tag=='id' and data!=''">
id like '%' || #{data} || '%'
</if>
<if test="tag=='content' and data!=''">
content like '%' || #{data} || '%'
</if>
<if test="tag=='write_date' and data!=''">
<!-- trunc(write_date) <= #{data} -->
<![CDATA[
trunc(write_date) <= #{data}
]]>
</if>
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="board/list" extends="mainTemplate">
<put-attribute name="menu" value="/WEB-INF/menu/board_menu.jsp"/>
<put-attribute name="content" value="/WEB-INF/board/boardlist.jsp"/>
</definition>
<definition name="board/writepage" extends="mainTemplate">
<put-attribute name="menu" value="/WEB-INF/menu/board_menu.jsp"/>
<put-attribute name="content" value="/WEB-INF/board/board_write.jsp"/>
</definition>
<definition name="board/read" extends="mainTemplate">
<put-attribute name="menu" value="/WEB-INF/menu/board_menu.jsp"/>
<put-attribute name="content" value="/WEB-INF/board/board_read.jsp"/>
</definition>
<definition name="board/update" extends="mainTemplate">
<put-attribute name="menu" value="/WEB-INF/menu/board_menu.jsp"/>
<put-attribute name="content" value="/WEB-INF/board/board_update.jsp"/>
</definition>
</tiles-definitions>
@Controller
@RequestMapping("/board")
public class BoardController {
private BoardService service;
@Autowired
public BoardController(BoardService service) {
super();
this.service = service;
}
@GetMapping("/list")
public ModelAndView list(String category) {
System.out.println(category+"========");
ModelAndView mav = new ModelAndView("board/list");
System.out.println("컨트롤러");
//서비스메소드를 호출
List<BoardDTO> boardlist = service.findByCategory(category);
System.out.println(boardlist);
//데이터공유
mav.addObject("boardlist", boardlist);
mav.addObject("category", category);
return mav;
}
@GetMapping("/write")
public String write() {
return "board/writepage";//뷰이름
}
@PostMapping("/write")
public String insert(BoardDTO board) {
service.insert(board);
return "redirect:/board/list?category=all";
}
//동적쿼리를 테스트
//사용자가 select에서 어떤 option을 선택하냐에 따라 다른 쿼리가 실행되ㅓㅇ야한다.
@PostMapping("/search")
public ModelAndView search(String tag, String search) {
ModelAndView mav = new ModelAndView("board/list");
System.out.println("컨트롤러");
//서비스메소드를 호출
List<BoardDTO> boardlist = service.search(tag,search);
System.out.println(boardlist);
//데이터공유
mav.addObject("boardlist", boardlist);
return mav;
}
//Model타입의 변수를 매개변수에 정의하면 스프링내부에서 데이터를 담을 수 있는 모델객체를 만들어서 넘겨준다.
@GetMapping("/read")
public String read(String board_no, String action, Model model) {
BoardDTO board = service.getBoardInfo(board_no);
String view = "";
if(action.equals("READ")) {
view = "board/read";
}else {
view = "board/update";
}
System.out.println(board);
//스프링이 만들어준 모델객체에 공유할 데이터를 공유한다.
model.addAttribute("board", board);
//모델객체에 데이터를 공유했으므로 뷰정보만 리턴
//=>리턴되면서 DispatcherServlet에 ModelAndView객체로 만들어져서 리턴된다.
return view;
}
@GetMapping("/delete")
public String delete(String board_no) {
service.delete(board_no);
return "redirect:/board/list?category=all";
}
@PostMapping("/update")
public String update(BoardDTO board) {
service.update(board);
return "redirect:/board/list?category=all";
}
}
@Repository
public class BoardDAOImpl implements BoardDAO {
//MyBatis의 핵심클래스로 이 클래스가 지원하는 기능을 이용해서 sql을 실행
SqlSession sqlSessionTemplate;
@Autowired
public BoardDAOImpl(SqlSession sqlSessionTemplate) {
super();
this.sqlSessionTemplate = sqlSessionTemplate;
}
@Override
public int insert(BoardDTO board) {
return sqlSessionTemplate.insert("com.multi.erp.board.insert",board);
}
@Override
public List<BoardDTO> boardList() {
System.out.println("boardDAO");
//SqlSession의 selectList는 여러개의 레코드를 반환하는 sql명령문을 실행하기 위해 제공되는 메소드
//이므로 List<DTO>를 반환한다.
//selectList등의 SqlSession에서 제공되는 sql문을 실행하기 위한 메소드는 statement를 매개변수로 정의
//statement가 매퍼에 정의한 sql문을 구분하는 id명
//네임스페이스명.id명
//외부에서 입력하는 값이 있는 경우 값을 매개변수로 전달
return sqlSessionTemplate.selectList("com.multi.erp.board.selectall");
}
@Override
public BoardDTO read(String board_no) {
return sqlSessionTemplate.selectOne("com.multi.erp.board.read", board_no);
}
@Override
public int update(BoardDTO board) {
return sqlSessionTemplate.update("com.multi.erp.board.update", board);
}
@Override
public int delete(String board_no) {
return sqlSessionTemplate.delete("com.multi.erp.board.delete", board_no);
}
@Override
public List<BoardDTO> search(String data) {
return sqlSessionTemplate.selectList("com.multi.erp.board.search", data);
}
//동적 sql처리
//dto에 담기지 않는 매개변수 2개를 마이바티스로 넘기기
@Override
public List<BoardDTO> search(String tag, String data) {
List<BoardDTO> list = null;
Map<String,String> map = new HashMap<>();
map.put("tag", tag);
map.put("data", data);
list = sqlSessionTemplate.selectList("com.multi.erp.board.dynamicSearch", map);
return list;
}
@Override
public List<BoardDTO> findByCategory(String category) {
return sqlSessionTemplate.selectList("com.multi.erp.board.categorySelect", category);
}
}
//BoardDAO의 메소드 호출
//컨트롤러에서 받은 데이터를 가공해서 DAO로 넘기거나 DAO에서 받은 데이터를 가공해서 컨트롤러로 넘기는 작업
//비지니스로직
//트랜잭션처리
@Service
public class BoardServiceImpl implements BoardService {
private BoardDAO dao;
@Autowired
public BoardServiceImpl(BoardDAO dao) {
super();
this.dao = dao;
}
@Override
public int insert(BoardDTO board) {
return dao.insert(board);
}
@Override
public List<BoardDTO> boardList() {
System.out.println("boardService");
List<BoardDTO> boardlist = dao.boardList();
return boardlist;
}
@Override
public BoardDTO getBoardInfo(String board_no) {
BoardDTO dto = dao.read(board_no);
return dto;
}
@Override
public int update(BoardDTO board) {
return dao.update(board);
}
@Override
public int delete(String board_no) {
return dao.delete(board_no);
}
@Override
public List<BoardDTO> search(String data) {
return dao.search(data);
}
@Override
public List<BoardDTO> search(String tag, String data) {
return dao.search(tag,data);
}
@Override
public List<BoardDTO> findByCategory(String category) {
//조건을 판단해서 dao의 적절한 메소드를 호출하기 - 비즈니스로직
List<BoardDTO> list = null;
if(category!=null) {
if(category.equals("all")) {
list = dao.boardList();
}else {
list = dao.findByCategory(category);
}
}
return list;
}
}
<%@ 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">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/erp/common/css/main.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style>
/* Remove the navbar's default margin-bottom and rounded borders */
.navbar {
margin-bottom: 0;
border-radius: 0;
}
/* #toparea{
padding: 30px;
} */
/* body{
background-color: #edeef1
} */
</style>
<title>Insert title here</title>
</head>
<body>
<div style="height:90px" style="padding:10px">
<div id="toparea" class="navbar navbar-inverse">
<a href="#" style="position:absolute;top:30px;font-size: 18pt; font-weight: bolder;text-decoration: none;padding-left: 10px">KimSaemERP</a>
<ul class="nav navbar-nav navbar-right"
style="position:relative ;top:20px" >
<c:choose>
<c:when test="${user==null }">
<li style="margin-right: 20px;height: 70px">
<a href="/erp/emp/login.do"><span class="glyphicon glyphicon-log-in">
</span>Login</a></li>
</ul>
</c:when>
<c:otherwise>
<li><a href="/erp/schedule/list"><span class="glyphicon glyphicon-log-out"></span>
나의스케쥴</a></li>
<li><a href="/erp/member/logout"><span class="glyphicon glyphicon-log-out"></span>
Logout</a></li>
</ul>
<span class="navbar-form pull-right" >
<img class="img-circle" style="width: 60px;height: 70px"
src="/erp/images/${user.profile_photo }" />
</span>
</c:otherwise>
</c:choose>
<form class="navbar-form pull-right" style="position:relative ;top:20px">
<input class="form-control mr-sm-2" type="search"
placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</div>
<nav>
<div class="container-fluid">
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="/erp/menu/insa.do">업무관리</a></li>
<li><a href="#">자원관리</a></li>
<li><a href="/erp/board/list?category=all">커뮤니티</a></li>
<li><a href="#">일정관리</a></li>
<li><a href="#">휴가관리</a></li>
<li><a href="#">결재</a></li>
</ul>
</div>
</div>
</nav>
</body>
</html>
<%@ 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>
<title>Bootstrap Example</title>
<meta charset="UTF-8">
<link rel="stylesheet"
href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript">
//JQuery를 이용해서 select에서 선택을 하면 컨트롤러가 요청되도록 처리
let category = "${category}";//컨트롤러를 요청하고 response될때 공유해준 값을 가져와서 EL로 셋팅
$(document).ready(function () {
//alert("컨트롤러가 공유한 데이터=>"+category);
//console.log("컨트롤러가 공유한 데이터=>"+category);
//선택된거에 셀렉티드속성을 주는..느낌?
//select에서 선택된 option에 selected속성을 추가
$("#category").val(category).attr("selected","selected")
$("#category").change(function() {
//select가 변경되는 change이벤트가 발생하면 컨트롤러를 호출
//alert($(this).val())
location.href="/erp/board/list?category="+$(this).val()
})
});
</script>
</head>
<body>
<div style="padding-top: 30px">
<div class="col-md-3" style="padding-bottom: 10px">
구분:
<form action="">
<select name="category" id="category">
<option value="all">전체게시물</option>
<option value="경조사">경조사</option>
<option value="사내소식">사내소식</option>
<option value="게시판">게시판</option>
</select>
</form>
</div>
<table class="table">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>등록일</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:forEach var="board" items="${boardlist }">
<tr>
<td>${board.board_no }</td>
<td><a href="/erp/board/read?board_no=${board.board_no }&action=READ">${board.title }</a></td>
<td>${board.id }</td>
<td>${board.write_date }</td>
<td><a href="/erp/board/delete?board_no=${board.board_no }">삭제</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<form action="/erp/board/search" method="post">
<select name="tag">
<option value="id">작성자</option>
<option value="title">제목</option>
<option value="content">본문</option>
<option value="write_date">작성일</option>
</select> <input type="text" name="search" /> <input type="submit" value="검색">
<ul class="nav navbar-nav navbar-right">
<li><a href="/erp/board/write" style="text-align: right;">글쓰기</a></li>
</ul>
</form>
</body>
</html>
<%@ 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>
<link href="/springmvc/common/css/font-awesome.css" rel="stylesheet" />
<!-- Custom styles for this template -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<h4>
<i class="fa fa-angle-right"></i> 게시글 작성하기
</h4>
<hr>
<div class="row mt">
<div class="col-lg-12">
<div class="form-panel">
<form class="form-horizontal style-form"
action="/erp/board/write" method="post">
<div class="form-group" style="border: 1px solid #eff2f7;">
<label class="col-sm-2 col-sm-2 control-label">작성자</label>
<div class="col-sm-10">
<input type="hidden" name="id" value="lee">
<p class="form-control-static">김서연</p>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label">게시글 유형</label>
<div class="col-sm-5">
<select name="category" class="form-control">
<option value="경조사">경조사</option>
<option value="사내소식">사내소식</option>
<option value="게시판">게시판</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label">제목</label>
<div class="col-sm-8">
<input type="text" class="form-control"
name="title">
<span class="help-block">게시글 유형에 맞는 내용으로 작성 부탁드립니다. </span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label">내용</label>
<div class="col-sm-8">
<textarea id="content"
style="width: 100%; border: 1; overflow: visible; text-overflow: ellipsis;"
rows=15 name="content">글작성</textarea>
</div>
</div>
<div class="form-group">
<div class="col-lg-4 text-center"></div>
<div class="col-lg-2 text-center">
<button type="submit" class="btn btn-success"
style="width: 100px; background-color: #0ea006">등록</button>
</div>
<div class="col-lg-2 text-center">
<button type="reset" class="btn btn-default"
style="width: 100px; background-color: #9a9a9a">취소</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="true"%>
<!DOCTYPE>
<html>
<head>
<title>인사관리시스템</title>
<link rel="stylesheet"
href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
let category = "${board.category}";
$("#category").val(category).attr("selected","selected")
});
</script>
</head>
<body>
<form class="form-horizontal"
action=""
method="post" >
<div class="form-group">
<div class="col-md-2 text-right">
<label for="id" class="control-label">번호</label>
</div>
<div class="col-md-8">${board.board_no }</div>
</div>
<div class="form-group">
<div class="col-md-2 text-right">
<label for="id" class="control-label">게시글종류</label>
</div>
<div class="col-md-3">
<select name="category" class="form-control"
id="category">
<option value="경조사" >경조사</option>
<option value="사내소식">사내소식</option>
<option value="게시판">게시판(익명)</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-2 text-right">
<label for="id" class="control-label">작성자</label>
</div>
<div class="col-md-8">${board.id }</div>
</div>
<div class="form-group">
<div class="col-md-2 text-right">
<label for="title" class="control-label">제목</label>
</div>
<div class="col-md-8">${board.title }</div>
</div>
<div class="form-group">
<div class="col-md-2 text-right">
<label for="title" class="control-label">작성날짜</label>
</div>
<div class="col-md-8">${board.write_date }</div>
</div>
<div class="form-group">
<div class="col-md-2 text-right">
<label for="text" class="control-label">내용</label>
</div>
<div class="col-md-8"
style="width: 500px; height: 400px; border: solid 1px;">
${board.content }
</div>
</div>
<div class="form-group">
<div class="col-md-10 text-center">
<input type="button" class="btn btn-lg btn-primary"
value="수정"
onclick="location.href='/erp/board/read?board_no=${board.board_no }&action=UPDATE'">
<button type="button" class="btn btn-danger btn-lg"
onclick="location.href='/erp/board/list?category=all'">
<i class="fa fa-fw fa-close"></i> 목록
</button>
<button type="button" class="btn btn-danger btn-lg"
id="deletebtn"
onclick="location.href='/erp/board/delete?board_no=${board.board_no }'">
<i class="fa fa-fw fa-close"></i> 삭제
</button>
</div>
</div>
</form>
</body>
</html>
<%@ 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>
<link href="/springmvc/common/css/font-awesome.css" rel="stylesheet" />
<!-- Custom styles for this template -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
data = "${board.category}"
$("#category").val(data).attr("selected","selected");
});
</script>
<body>
<h4>
<i class="fa fa-angle-right"></i> 게시글 수정하기
</h4>
<hr>
<div class="row mt">
<div class="col-lg-12">
<div class="form-panel">
<form class="form-horizontal style-form"
action="/erp/board/update" method="post">
<div class="form-group">
<div class="col-md-2 text-right">
<label for="id" class="control-label">번호</label>
</div>
<div class="col-md-8">${board.board_no }</div>
</div>
<input type="hidden" name="board_no" value="${board.board_no }">
<div class="form-group">
<div class="col-md-2 text-right">
<label for="id" class="control-label">게시글종류</label>
</div>
<div class="col-md-3">
<select name="category" class="form-control" id="category">
<option value="경조사">경조사</option>
<option value="사내소식">사내소식</option>
<option value="게시판">게시판</option>
</select>
</div>
</div>
<div class="form-group" style="border: 1px solid #eff2f7;">
<label class="col-sm-2 col-sm-2 control-label">작성자</label>
<div class="col-sm-10">
<p class="form-control-static">
${board.id}
</p>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label">제목</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="title" value="${board.title }"> <span
class="help-block">게시글 유형에 맞는 내용으로 작성 부탁드립니다. </span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label">내용</label>
<div class="col-sm-8">
<textarea id="content"
style="width: 100%; border: 1; overflow: visible; text-overflow: ellipsis;"
rows=15 name="content">${board.content }</textarea>
</div>
</div>
<div class="form-group">
<div class="col-lg-4 text-center"></div>
<div class="col-lg-2 text-center">
<button type="submit" class="btn btn-success"
style="width: 100px; background-color: #0ea006">수정</button>
</div>
<div class="col-lg-2 text-center">
<button type="reset" class="btn btn-default"
style="width: 100px; background-color: #9a9a9a">취소</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.