160530: 53회차

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


오늘도 spring :>

ajax 책 좀 열심히 독파할 것!


설명을 일단 적어 봅시다... -.-)


redirect

request


BoardController에서 


update의 경우에

public String update(BoardDTO dto, String oldfile, HttpServletRequest request){

String basePath = request.getRealPath("/storage");

String filename = Utility.saveFile(dto.getFilenameMF(), basePath);

int filesize = (int)dto.getFilenameMF().getSize();

dto.setFilename(filename);

dto.setFilesize(filesize);

boolean flag = mgr.passwdCheck(dto.getNum(), dto.getPasswd());

if(flag){

if(mgr.update(dto))Utility.deleteFile(basePath, oldfile);

return "redirect:/list";

}else{

return "passwdError";

}

redirect부터는 새로운 request가 만들어짐 :>!


model.addAttribute("nowPage", request.getParameter("nowPage"));

if(mgr.update(dto))Utility.deleteFile(basePath, oldfile);

return "redirect:/list";//redirect부터는 새로운 request가 만들어짐

요걸 if문 안에 추가해서 가지고감


if(flag){

model.addAttribute("nowPage", request.getParameter("nowPage"));

model.addAttribute("col", request.getParameter("col"));

model.addAttribute("word",request.getParameter("word"));

if(mgr.update(dto))Utility.deleteFile(basePath, oldfile);

return "redirect:/list";//redirect부터는 새로운 request가 만들어짐

이런 식으로 다 가지고 감!

스프링은 알아서 forword나 sendredirect나 유지를 시켜줌


오늘 할 것: 

mvc_team 배운 뒤

mvc_address 알아서 해보기


---1교시---



pom.xml - 레이븐이 라이브러리 관리해주는 내용 관련 파일


spring_board 에서 오라클 관련 dependency하고 repositories 가져옴


webapp\WEB-INF\spring\appServlet\servlet-context.xml

에서


어노테이션 객체 생성 관련 코드를 적어줘야함

기본적으로 

<context:component-scan base-package="spring.sts.team" />

는 있으니까

<context:component-scan base-package="spring.model.team" />

를 추가해준당.


그리고 dao에다가 annotation을 추가해주면 된다.


TeamDAO의 

public class TeamDAO{ 부분 위에다가

@Component 추가해주면


어노테이션이 인식됨 :>


views에다가 view내용들 - CRUD관련 jsp 가져다가 놓음


넘나 좋은 POJO 포존데 왜 푸조야

포조!

푸주까지 인정


하지만 다들 POJO...

그럼 PUMA는 왜 퓨마야

유니까 그렇구나



아 그리고 나서 spring.sts.team에다가

TeamController 만들어 준담에

package spring.sts.team;


import org.springframework.stereotype.Controller;


@Controller

public class TeamController {


}


이렇게 어노테이션을 추가하면 됨



<<사용한 어노테이션>>

@Component

@Controller

@Autowired

@RequestMapping





@RequestMapping("/list")

public String list(HttpServletRequest request){

String col=Utility.nullCheck(request.getParameter("col"));

String word=Utility.nullCheck(request.getParameter("word"));

if(col.equals("total"))word="";

int nowPage=1;

int recordPerPage=5;

if(request.getParameter("nowPage")!=null){

nowPage=Integer.parseInt(request.getParameter("nowPage"));

}

int sno=(((nowPage)-1)*recordPerPage)+1;

int eno=nowPage*recordPerPage;

Map map=new HashMap();

map.put("sno", sno);

map.put("eno", eno);

map.put("col", col);

map.put("word", word);


TeamDAO dao=new TeamDAO();

List<TeamDTO>list=dao.list(map);

int total=dao.total(col, word);

String paging=new Paging().paging3(total, nowPage, recordPerPage, col, word);

request.setAttribute("list", list);

request.setAttribute("paging", paging);

request.setAttribute("col", col);

request.setAttribute("word", word);

request.setAttribute("nowPage", nowPage);

return "list";

}


이런 식으로 

mvc의 ListAction을 가져다 씀


TeamDAO dao=new TeamDAO();

이걸 생성하면 위에 선언한 dao를 안 쓰게 되니까 지워줌


@Autowired

private TeamDAO dao;


그러면 이걸 씀 :>



그담에 파라미터에 model 추가해놓고



request.setAttribute("list", list);

request.setAttribute("paging", paging);

request.setAttribute("col", col);

request.setAttribute("word", word);

request.setAttribute("nowPage", nowPage);


요거를


model.addAttribute("list", list);

model.addAttribute("paging", paging);

model.addAttribute("col", col);

model.addAttribute("word", word);

model.addAttribute("nowPage", nowPage);


요걸로 바꿔줌


DAO랑 리스트랑 파랑색인지 확인 해보면 바뀐 거 알 수 있음.



list.jsp에서

../css 를 ./css로 바꿔주고

.do를 없애준다.


webapp에다가

css , images 파일을 복사해서 넣어주고


servlet-context의 경로를

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the 


${webappRoot}/resources directory -->

<resources mapping="/**" location="/" />

로 바꿔줌 (resourcess빼준거임)



이 상태에서 실행하면 한글이 깨짐


이거 수정법: 다른 jsp에서 한글처리를 복사해다가 넣음


---2교시---



@RequestMapping(value="/create", method=RequestMethod.GET)

public String create(){

return "createForm";

}


이거랑

.POST 만들었음


어 그런데 CreateProcAction에서 보니까 Upload 사용함... -.-



spring_team\src\main\webapp\storage

라는 폴더 만듬



D:\javadb\spring\workspace\spring_team\src\main\webapp\WEB-INF\spring\root-context.xml

에다가 board의 root-context.xml 가져다가 붙여넣음


pom.xml에

<!-- fileupload setting -->                

        <dependency> 

          <groupId>commons-fileupload</groupId> 

          <artifactId>commons-fileupload</artifactId> 

          <version>1.2.1</version> 

        </dependency> 

도 붙여넣음 - 업로드 관련


그리고 나서 createForm에 가서

file의 이름을 fileMF로 바꿔줌


그리고 나서 이러저러하게 saveFile도 복붙해주고

이러저러한 일을 해줌 -.-)


코드는 일단 이렇게 생김

@RequestMapping(value="/create", method=RequestMethod.POST)

public String create(TeamDTO dto, HttpServletRequest request){

String basePath = request.getRealPath("/storage");

String fname = "member.jpg";

// String fname = Utility.saveFile(dto.getFnameMF(), basePath);

dto.setFname(fname);

return "createForm";

}


fname 테스트해본다고 저렇게 만듬


근데 기존에 saveFile 메소드가 오류가 있다고 어... create(포스트로 받는 애) 를 수정하기로 함


<dependencies>

  <dependency>

      <groupId>commons-io</groupId>

 <artifactId>commons-io</artifactId>

      <version>1.4</version>

    </dependency>

얘도 pom.xml에 넣어주고



@RequestMapping(value="/create", method=RequestMethod.POST)

public String create(TeamDTO dto, HttpServletRequest request){

String basePath = request.getRealPath("/storage");

String fname = "member.jpg";

int filesize = (int)dto.getFnameMF().getSize();

if(filesize>0){

fname = Utility.saveFile(dto.getFnameMF(), basePath);

}

dto.setFname(fname);

if(dao.create(dto)){

return "redirect:/list";

}else{

return "error";

}

}

이것이 최종코드인것


그리고나서 createForm.jsp에서도 맨날하는거를 해준다



---3교시--




4교시! :>


리드 할거임

read의 리드


리드하고싶진 않다


뤼드

그냥 이렇게 생김

@RequestMapping(value = "/read")

public String read(int no, Model model){

model.addAttribute("dto", dao.read(no));

return "read";

}


포스트/겟방식 필요 없는 것


read.jsp에 가서 경로도 바꿔줌


-끝-




update는 create 가져다가 바꾸면 됨



@RequestMapping(value="/update", method=RequestMethod.POST)

public String update(TeamDTO dto, String oldfile, HttpServletRequest request, Model model){

String basePath = request.getRealPath("/storage");

String fname = "member.jpg";

int filesize = (int)dto.getFnameMF().getSize();

if(filesize>0){

if(oldfile!=null && !oldfile.equals("member.jpg"))

Utility.deleteFile(basePath, oldfile);

fname = Utility.saveFile(dto.getFnameMF(), basePath);

}

dto.setFname(fname);

if(dao.update(dto)){

model.addAttribute("nowPage", request.getParameter("nowPage"));

model.addAttribute("col", request.getParameter("col"));

model.addAttribute("word", request.getParameter("word"));

return "redirect:/list";

}else{

return "error";

}

}



@RequestMapping(value="/update", method=RequestMethod.GET)

public String update(int no, Model model){

model.addAttribute("dto", dao.read(no));

return "updateForm";

}


리턴값 잘 확인할 것


--4교시--


workspace.egg






5. 수업

진도: 

hw: 


6. 할것


책 신청



'Programming' 카테고리의 다른 글

160601: 55회차  (0) 2016.06.01
160531: 54회차  (0) 2016.05.31
160527: 52회차  (0) 2016.05.27
160526: 51회차  (0) 2016.05.26
160525: 50회차  (0) 2016.05.25
Posted by DAVID