pom.xml에
**<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- JDBC Template -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>**
pom.xml
<!-- JDBC Template -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
servlet-context.xml
<?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 -->
<resources mapping="/resources/**" location="/resources/" />
<!-- 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/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.javalec.spring_mvc_board_mybatis" />
<!-- 추가된 부분 -->
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
<beans:property name="username" value="scott"></beans:property>
<beans:property name="password" value="tiger"></beans:property>
</beans:bean>
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_mybatis/dao/mapper/*.xml"></beans:property>
</beans:bean>
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
<!-- 추가된 부분 끝 -->
</beans:beans>
BDto.java
package com.javalec.spring_mvc_board_mybatis.dto;
import java.sql.Timestamp;
public class BDto {
int bId;
String bName;
String bTitle;
String bContent;
Timestamp bDate;
int bHit;
public BDto() {
// TODO Auto-generated constructor stub
}
public BDto(int bId, String bName, String bTitle, String bContent, Timestamp bDate, int bHit) {
this.bId = bId;
this.bName = bName;
this.bTitle = bTitle;
this.bContent = bContent;
this.bDate = bDate;
this.bHit = bHit;
}
public int getbId() {
return bId;
}
public void setbId(int bId) {
this.bId = bId;
}
public String getbName() {
return bName;
}
public void setbName(String bName) {
this.bName = bName;
}
public String getbTitle() {
return bTitle;
}
public void setbTitle(String bTitle) {
this.bTitle = bTitle;
}
public String getbContent() {
return bContent;
}
public void setbContent(String bContent) {
this.bContent = bContent;
}
public Timestamp getbDate() {
return bDate;
}
public void setbDate(Timestamp bDate) {
this.bDate = bDate;
}
public int getbHit() {
return bHit;
}
public void setbHit(int bHit) {
this.bHit = bHit;
}
}
IBDao.java
package com.javalec.spring_mvc_board_mybatis.dao;
import java.util.ArrayList;
import com.javalec.spring_mvc_board_mybatis.dto.*;
public interface IBDao {
//IBDao.xml파일의 id는 메소드명 !
//예로 들면 list, write, contentView, modify...
public ArrayList<BDto> list();
public void write(String bName, String bTitle, String bContent);
public BDto contentView(String strID);
public void modify(String bId, String bName, String bTitle, String bContent);
public void delete(String strID);
}
IBDao.xml
<?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.javalec.spring_mvc_board_mybatis.dao.IBDao">
<!--IBDao.java의 -->
<!-- ArrayList<BDto> list -->
<select id="list" resultType="com.javalec.spring_mvc_board_mybatis.dto.BDto">
select bId, bName, bTitle, bContent, bDate, bHit from MVC_BOARD
</select>
<!-- write부분 -->
<insert id="write">
insert into MVC_BOARD(bId, bName, bTitle, bContent, bHit)
values(MVC_BOARD_SEQ.NEXTVAL,#{param1},#{param2},#{param3},0)
</insert>
<!-- contentView -->
<select id="contentView" resultType="com.javalec.spring_mvc_board_mybatis.dto.BDto">
select bId, bName, bTitle, bContent, bDate, bHit from MVC_BOARD where bId=#{param1}
</select>
<!-- modify부분 -->
<update id="modify">
update MVC_BOARD set bName = #{param2}, bTitle = #{param3}, bContent = #{param4}
where bId=#{param1}
</update>
<!-- 아래도 됨!
<insert id="modify">
update MVC_BOARD set bName = #{param2}, bTitle = #{param3}, bContent = #{param4}
where bId=#{param1}
</insert>
-->
<!-- delete부분 -->
<delete id="delete">
delete from MVC_BOARD where bId=#{param1}
</delete>
</mapper>
BController.java
package com.javalec.spring_mvc_board_mybatis.controller;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.javalec.spring_mvc_board_mybatis.dao.IBDao;
//import com.javalec.spring_mvc_board_jdbc.service.BContentService;
//import com.javalec.spring_mvc_board_jdbc.service.BDeleteService;
//import com.javalec.spring_mvc_board.command.BCommand;
//import com.javalec.spring_mvc_board.command.BContentCommand;
//import com.javalec.spring_mvc_board.command.BDeleteCommand;
//import com.javalec.spring_mvc_board.command.BListCommand;
//import com.javalec.spring_mvc_board.command.BModifyCommand;
//import com.javalec.spring_mvc_board.command.BWriteCommand;
//import com.javalec.spring_mvc_board_jdbc.service.BListService;
//import com.javalec.spring_mvc_board_jdbc.service.BModifyService;
//import com.javalec.spring_mvc_board_jdbc.service.BService;
//import com.javalec.spring_mvc_board_jdbc.service.BWriteService;
//import com.javalec.spring_mvc_board_jdbc.util.Constant;
@Controller
public class BController {
// BService service;
// public JdbcTemplate template;
//
// @Autowired
// public void setTemplate(JdbcTemplate template) {
// this.template = template;
// Constant.template = this.template;
// }
@Autowired
private SqlSession sqlSession;
@RequestMapping("/list")
public String list(Model model) {
System.out.println("@@@### list()");
// service = new BListService();
// service.execute(model);
IBDao dao = sqlSession.getMapper(IBDao.class);
model.addAttribute("list", dao.list());
return "list";
}
@RequestMapping("/write_view")
public String write_view() {
System.out.println("@@@### write_view()");
return "write_view";
}
@RequestMapping("/write")
public String write(HttpServletRequest request, Model model) {
System.out.println("@@@### write()");
IBDao dao = sqlSession.getMapper(IBDao.class);
dao.write(request.getParameter("bName")
, request.getParameter("bTitle")
, request.getParameter("bContent"));
//여기서 write는 IBDao.java의 write메소드에 해당됨
// model.addAttribute("request", request);
// service = new BWriteService();
// service.execute(model);
return "redirect:list";
}
//
@RequestMapping("/content_view")
public String content_view(HttpServletRequest request, Model model) {
System.out.println("@@@### content_view()");
IBDao dao = sqlSession.getMapper(IBDao.class);
model.addAttribute("content_view",dao.contentView(request.getParameter("bId")));
// model.addAttribute("request", request);
// service = new BContentService();
// service.execute(model);
return "content_view";
}
//
@RequestMapping("/modify")
public String modify(HttpServletRequest request, Model model) {
System.out.println("@@@### modify()");
// model.addAttribute("request", request);
// service = new BModifyService();
// service.execute(model);
IBDao dao = sqlSession.getMapper(IBDao.class);
dao.modify(request.getParameter("bId")
, request.getParameter("bName")
, request.getParameter("bTitle")
, request.getParameter("bContent"));
return "redirect:list";
}
@RequestMapping("/delete")
public String delete(HttpServletRequest request, Model model) {
System.out.println("@@@### delete()");
// model.addAttribute("request", request);
// service = new BDeleteService();
// service.execute(model);
IBDao dao = sqlSession.getMapper(IBDao.class);
dao.delete(request.getParameter("bId"));
return "redirect:list";
}
}
나머지 content.view.jsp와 listh.jsp, write_view.jsp는 전과 동일한 파일
servlet-context.xml
<?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 -->
<resources mapping="/resources/**" location="/resources/" />
<!-- 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/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.javalec.spring_test_member_mybatis" />
<!-- 추가된 부분 -->
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
<beans:property name="username" value="scott"></beans:property>
<beans:property name="password" value="tiger"></beans:property>
</beans:bean>
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/javalec/spring_test_member_mybatis/dao/mapper/*.xml"></beans:property>
</beans:bean>
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
<!-- 추가된 부분 끝 -->
</beans:beans>
MemDto.java
package com.javalec.spring_test_member_mybatis.dto;
public class MemDto {
String mem_uid;
String mem_pwd;
String mem_name;
public MemDto(String mem_uid, String mem_pwd, String mem_name) {
super();
this.mem_uid = mem_uid;
this.mem_pwd = mem_pwd;
this.mem_name = mem_name;
}
public String getMem_uid() {
return mem_uid;
}
public void setMem_uid(String mem_uid) {
this.mem_uid = mem_uid;
}
public String getMem_pwd() {
return mem_pwd;
}
public void setMem_pwd(String mem_pwd) {
this.mem_pwd = mem_pwd;
}
public String getMem_name() {
return mem_name;
}
public void setMem_name(String mem_name) {
this.mem_name = mem_name;
}
public MemDto() {
}
}
MemDao.xml
<?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.javalec.spring_test_member_mybatis.dao.MemDao">
<select id="loginYn" resultType="com.javalec.spring_test_member_mybatis.dto.MemDto">
select mem_pwd from MVC_MEMBER where mem_uid=#{param1}
</select >
<insert id="write">
insert into MVC_MEMBER(mem_uid, mem_pwd, mem_name) values(#{param1}, #{param2}, #{param3})
</insert>
</mapper>
MemDao .java
package com.javalec.spring_test_member_mybatis.dao;
import java.util.ArrayList;
import com.javalec.spring_test_member_mybatis.dto.MemDto;
public interface MemDao {
public ArrayList<MemDto> loginYn( String id, String pw);
public void write(String mem_uid, String mem_pwd, String mem_name);
}
MemController.java
package com.javalec.spring_test_member_mybatis.controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.javalec.spring_test_member_mybatis.dao.MemDao;
import com.javalec.spring_test_member_mybatis.dto.MemDto;
//import com.javalec.spring_test_member_jdbc.util.Constant;
//import com.javalec.spring_test_member_jdbc.service.*;
@Controller
public class MemController {
// MemService service;
// public JdbcTemplate template;
//
// @Autowired
// public void setTemplate(JdbcTemplate template) {
// //메소드의 매개변수인 template는 servlet-context.xml의 name의 template
// this.template = template;
// Constant.template = this.template;
// }
@Autowired
private SqlSession sqlSession;
@RequestMapping("/login")
public String login() {
System.out.println("###@@@ login()");
return "login";
}
@RequestMapping("/login_yn")
public String login_yn(HttpServletRequest request, Model model) {
System.out.println("###@@@ login_yn()");
//강사님 방법
MemDao dao = sqlSession.getMapper(MemDao.class);
ArrayList<MemDto> dtos = dao.loginYn(request.getParameter("mem_uid"), request.getParameter("mem_pwd"));
if (dtos.isEmpty()) {
return "redirect:login";
}else {
if (request.getParameter("mem_pwd").equals(dtos.get(0).getMem_pwd())) {
return "redirect:login_ok";
}else {
return "redirect:login";
}
}
//내 방법
// MemDao dao = sqlSession.getMapper(MemDao.class);
// ArrayList<MemDto> dtos = dao.loginYn(request.getParameter("mem_uid"), request.getParameter("mem_pwd"));
//
// int result;
//
// if (dtos.isEmpty()) {
// result=-1;
// }else {
// if (request.getParameter("mem_pwd").equals(dtos.get(0).getMem_pwd())) {
// result = 1;
// }else {
// result =0;
// }
// }
//
// //분기처리
// if (result == 1) {
// return "redirect:login_ok";//로그인 성공시 이동
// }
// return "redirect:login";//로그인 실패시 그자리에 그대로 있음
}
//
@RequestMapping("/login_ok")
public String login_ok() {
System.out.println("###@@@ login_ok()");
return "login_ok";
}
//
//
@RequestMapping("/register")
public String register() {
System.out.println("###@@@ register()");
return "register";
}
//
@RequestMapping("/registerOk")
public String registerOk(HttpServletRequest request, Model model) {// 값을 받기위해 파라미터 넣음
System.out.println("###@@@ registerOk");
MemDao dao = sqlSession.getMapper(MemDao.class);
dao.write(request.getParameter("mem_uid")
, request.getParameter("mem_pwd")
, request.getParameter("mem_name"));
return "redirect:login";
}
//
}
.jsp 파일은 동일하다.
HomeController.java
package com.javalec.spring_mvc_board_std;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
// return "home";
return "redirect:list";
//바로 list로 이동
}
}
BController.java
package com.javalec.spring_mvc_board_std.controller;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
//import com.javalec.spring_mvc_board_mybatis.dao.IBDao;
import com.javalec.spring_mvc_board_std.dto.BDto;
import com.javalec.spring_mvc_board_std.service.BService;
@Controller
public class BController {
// @Autowired
// private SqlSession sqlSession;
@Autowired
private BService service;
@RequestMapping("/list")
public String list(Model model) {
System.out.println("@@@### BController.list() start");
// IBDao dao = sqlSession.getMapper(IBDao.class);
// model.addAttribute("list", dao.list());
ArrayList<BDto> list = service.list();
model.addAttribute("list", list);
//"list"의 결과값을 ArrayList<BDto> list에 넣음
System.out.println("@@@### BController.list() end");
return "list";
}
@RequestMapping("/write_view")
public String write_view() {
System.out.println("@@@### write_view()");
return "write_view";
}
@RequestMapping("/write")
// public String write(HttpServletRequest request, Model model) {
public String write(@RequestParam HashMap<String,String> param) {
System.out.println("@@@### BController.write() start");
// IBDao dao = sqlSession.getMapper(IBDao.class);
// dao.write(request.getParameter("bName")
// , request.getParameter("bTitle")
// , request.getParameter("bContent"));
service.write(param);//매개변수 param만 넣기
System.out.println("@@@### BController.write() end");
return "redirect:list";
}
////
// @RequestMapping("/content_view")
// public String content_view(HttpServletRequest request, Model model) {
// System.out.println("@@@### content_view()");
//
// IBDao dao = sqlSession.getMapper(IBDao.class);
// model.addAttribute("content_view",dao.contentView(request.getParameter("bId")));
// return "content_view";
// }
////
// @RequestMapping("/modify")
// public String modify(HttpServletRequest request, Model model) {
// System.out.println("@@@### modify()");
//
//
// IBDao dao = sqlSession.getMapper(IBDao.class);
// dao.modify(request.getParameter("bId")
// , request.getParameter("bName")
// , request.getParameter("bTitle")
// , request.getParameter("bContent"));
//
// return "redirect:list";
// }
//
// @RequestMapping("/delete")
// public String delete(HttpServletRequest request, Model model) {
// System.out.println("@@@### delete()");
//
//
// IBDao dao = sqlSession.getMapper(IBDao.class);
// dao.delete(request.getParameter("bId"));
//
// return "redirect:list";
// }
//
}
IBDao.java
package com.javalec.spring_mvc_board_std.dao;
import java.util.ArrayList;
import java.util.HashMap;
import com.javalec.spring_mvc_board_std.dto.*;
public interface IBDao {
//IBDao.xml파일의 id는 메소드명 !
//예로 들면 list, write, contentView, modify...
public ArrayList<BDto> list();
// public void write(String bName, String bTitle, String bContent);
public void write(HashMap<String, String> param);
// 매개변수가 String bName, String bTitle, String bContent뿐만이 아니라 다른 것들도 있는 경우
// 넘어가는 데이터가 100개 막 이런경우에 사용함
//
// public BDto contentView(String strID);
//
// public void modify(String bId, String bName, String bTitle, String bContent);
//
// public void delete(String strID);
}
IBDao.xml
<?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.javalec.spring_mvc_board_std.dao.IBDao">
<!--IBDao.java의 -->
<!-- ArrayList<BDto> list -->
<select id="list" resultType="com.javalec.spring_mvc_board_std.dto.BDto">
select bId, bName, bTitle, bContent, bDate, bHit from MVC_BOARD
</select>
<!-- write부분 -->
<!-- haspmap의 형태로 처리하기 위해서 parameterType="hashmap" 추가 -->
<!-- 그리고 #{param}을 각 해당 name으로 바꾸면 됨 -->
<insert id="write" parameterType="hashmap">
insert into MVC_BOARD(bId, bName, bTitle, bContent, bHit)
values(MVC_BOARD_SEQ.NEXTVAL,#{bName},#{bTitle},#{bContent},0)
</insert>
</mapper>
BDto.java
package com.javalec.spring_mvc_board_std.dto;
import java.sql.Timestamp;
public class BDto {
int bId;
String bName;
String bTitle;
String bContent;
Timestamp bDate;
int bHit;
public BDto() {
// TODO Auto-generated constructor stub
}
public BDto(int bId, String bName, String bTitle, String bContent, Timestamp bDate, int bHit) {
this.bId = bId;
this.bName = bName;
this.bTitle = bTitle;
this.bContent = bContent;
this.bDate = bDate;
this.bHit = bHit;
}
public int getbId() {
return bId;
}
public void setbId(int bId) {
this.bId = bId;
}
public String getbName() {
return bName;
}
public void setbName(String bName) {
this.bName = bName;
}
public String getbTitle() {
return bTitle;
}
public void setbTitle(String bTitle) {
this.bTitle = bTitle;
}
public String getbContent() {
return bContent;
}
public void setbContent(String bContent) {
this.bContent = bContent;
}
public Timestamp getbDate() {
return bDate;
}
public void setbDate(Timestamp bDate) {
this.bDate = bDate;
}
public int getbHit() {
return bHit;
}
public void setbHit(int bHit) {
this.bHit = bHit;
}
}
BService.java
package com.javalec.spring_mvc_board_std.service;
import java.util.ArrayList;
import java.util.HashMap;
import org.springframework.ui.Model;
import com.javalec.spring_mvc_board_std.dto.BDto;
public interface BService {
//public void execute(Model model); //선언
public ArrayList<BDto> list();
public void write(HashMap<String, String> param);
}
BController.java
package com.javalec.spring_mvc_board_std.service;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import com.javalec.spring_mvc_board_std.dao.*;
import com.javalec.spring_mvc_board_std.dto.BDto;
//인터페이스 구현
@Service("BService")
public class BServiceImpl implements BService{
@Autowired
private SqlSession sqlSession;
//글 목록 보는 페이지
@Override
public ArrayList<BDto> list() {
//데이터 흐름 확인용 로그
System.out.println("@@@### BServiceImpl.list() start");
IBDao dao = sqlSession.getMapper(IBDao.class);
//model.addAttribute("list", dao.list());
ArrayList<BDto> list = dao.list();
//IBDao의 list
//데이터 흐름 확인용 로그
System.out.println("@@@### BServiceImpl.list() end");
// return "list";
return list;
}
// 글쓰기
@Override
public void write(HashMap<String, String> param) {
System.out.println("@@@### BServiceImpl.write() start");
//dao단 호출
IBDao dao = sqlSession.getMapper(IBDao.class);
// dao.write(request.getParameter("bName")
// , request.getParameter("bTitle")
// , request.getParameter("bContent"));
dao.write(param);//그냥 매개변수 param으로 넘기기
System.out.println("@@@### BServiceImpl.write() end");
}
}
Servlet-content.xml
<?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 -->
<resources mapping="/resources/**" location="/resources/" />
<!-- 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/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.javalec.spring_mvc_board_std" />
<!-- 추가된 부분 -->
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
<beans:property name="username" value="scott"></beans:property>
<beans:property name="password" value="tiger"></beans:property>
</beans:bean>
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_std/dao/mapper/*.xml"></beans:property>
</beans:bean>
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
<!-- 추가된 부분 끝 -->
</beans:beans>
pom.xml
<!-- JDBC Template -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
list.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<table width="500" border="1">
<tr>
<td>번호</td>
<td>이름</td>
<td>제목</td>
<td>날짜</td>
<td>히트</td>
</tr>
<c:forEach items="${list}" var="dto">
<tr>
<td>${dto.bId}</td>
<td>${dto.bName}</td>
<td>
<a href="content_view?bId=${dto.bId}">${dto.bTitle}</a>
</td>
<td>${dto.bDate}</td>
<td>${dto.bHit}</td>
</tr>
</c:forEach>
<tr>
<td colspan="5">
<a href="write_view">글작성</a>
</td>
</tr>
</table>
</body>
</html>
write.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>
<table width="500" border="1">
<form method="post" action="write"><!-- BController에서 write로 호출 해야함 -->
<tr>
<td>이름</td>
<td>
<input type="text" name="bName" size="50">
</td>
</tr>
<tr>
<td>제목</td>
<td>
<input type="text" name="bTitle" size="50">
</td>
</tr>
<tr>
<td>내용</td>
<td>
<textarea rows="10" name="bContent"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="입력">
</td>
</tr>
</form>
</table>
</body>
</html>
-- 다음시간에 이어서