@Reponsebody ,mybatis

2024. 2. 16. 18:00Daily Codig Reminder

@Reponsebody

 

@RequestBody : 프론트 json ⇒ 서버에 Request Body 전송시 서버에서 수신할 경우 사용

@ResponseBody

버튼⇒ 특정 주소 /aaa 요청

@RequestMapping(/aaa)

@ResponseBody

public String aaa(){returs “test”; //문자열 전체를 응답 데이터로 처리 }

@ResponseBody

public String aaa(){

return “hello”; // 문자열 전체를 응답데이터로 처리 ‘hello’문자열 응답처리 }

public String aaa(){

return “hello”; // hello.jsp }

 

 

@Controller
public class TestController {
	@RequestMapping("/ddd")
	@ResponseBody //비동기처이시 주로 사용
	public String ddd() {//servlet과 동일
		System.out.println("/ddd요청");
		return "hello";//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping("/aaa")
	@ResponseBody //없는데 억지로 aaa 치면 aaa.jsp 를 찾아가서 404에러가 뜸
	public LoginDTO aaa() {//servlet과 동일
		LoginDTO login = new LoginDTO();
		login.setPasswd("1234");
		login.setUserid("홍길동");
		//자동으로 json object 로 처리해줌
		System.out.println("/aaa요청");
		return login;//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping("/bbb")
	@ResponseBody //없는데 억지로 aaa 치면 aaa.jsp 를 찾아가서 404에러가 뜸
	public ArrayList<LoginDTO> bbb() {//servlet과 동일
		ArrayList<LoginDTO> list = new ArrayList<LoginDTO>();
		list.add(new LoginDTO("홍길동1","10"));
		list.add(new LoginDTO("홍길동2","20"));
		list.add(new LoginDTO("홍길동3","30"));
		list.add(new LoginDTO("홍길동4","40"));
		System.out.println("/bbb요청");
		return list;//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping("/ccc")
	
	 public @ResponseBody HashMap<String, ArrayList<LoginDTO>> ccc() {
	        HashMap<String, ArrayList<LoginDTO>> map = 
	        		new HashMap<String, ArrayList<LoginDTO>>();
	        ArrayList<LoginDTO> list = new ArrayList<LoginDTO>();

	        list.add(new LoginDTO("홍길동1", "10"));
	        list.add(new LoginDTO("홍길동2", "20"));
	        list.add(new LoginDTO("홍길동3", "30"));
	        list.add(new LoginDTO("홍길동4", "40"));

	        ArrayList<LoginDTO> list2 = new ArrayList<LoginDTO>();

	        list2.add(new LoginDTO("홍길동1", "10"));
	        list2.add(new LoginDTO("홍길동2", "20"));
	        list2.add(new LoginDTO("홍길동3", "30"));
	        list2.add(new LoginDTO("홍길동4", "40"));
	        
	        map.put("one", list);
	        map.put("two", list2);

	        System.out.println("/ccc 요청");
	        return map;
	    }
}

 

 

<%@ 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>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#ddd").on("click", function() {
        // AJAX 요청
    	  $.ajax({
              type: "post",
              url: "ddd", // 서버의 엔드포인트 URL로 변경해야 합니다.
             dataType: "text",
            
              success: function(data, status, xhr) {
                  console.log(data);    
                  $("#result").text(data);
              },
              error: function(xhr, status, error) {
              	console.log(error);
              }
          });
    });
    $("#aaa").on("click", function() {
        // AJAX 요청
    	 $.ajax({
             type: "get",
             url: "aaa", // 서버의 엔드포인트 URL로 변경해야 합니다.
            dataType: "json",
           
             success: function(data, status, xhr) {
                 console.log(data.userid,"\t"+data.passwd);    
                 $("#result").text(JSON.stringify(data));
             },
             error: function(xhr, status, error) {
             	console.log(error);
             }
         });
    });
    $("#bbb").on("click", function() {
        // AJAX 요청
    	 $.ajax({
             type: "post",
             url: "bbb", // 서버의 엔드포인트 URL로 변경해야 합니다.
            dataType: "json",
           
             success: function(data, status, xhr) {
                 console.log(data.length);  
                 for (var i = 0; i < data.length; i++) {
                     console.log(data[i].userid+"\t"+data[i].passwd);
                 }
                 $("#result").text(JSON.stringify(data));
             },
             error: function(xhr, status, error) {
             	console.log(error);
             }
         });
    });

$("#ccc").on("click", function() {
    // AJAX 요청
	 $.ajax({
         type: "get",
         url: "ccc", // 서버의 엔드포인트 URL로 변경해야 합니다.
        dataType: "json",
       
         success: function(data, status, xhr) {
             console.log(data.one);    
             console.log(data.two); 
             for (var i = 0; i < data.one.length; i++) {
                 console.log(data.one[i].userid+"\t"+data.one[i].passwd);
             }
             $("#result").text(JSON.stringify(data));
         },
         error: function(xhr, status, error) {
         	console.log(error);
         }
     });
 });
});

</script>
</head>
<body>
<h1>Main</h1>
main.jsp~~~~~~<br>
<button id="aaa"> aaa호출 :login 호출</button><br>
<button id="bbb"> bbb호출 : ArrayList</button><br>
<button id="ccc">ccc호출 :HashMap </button>
<button id="ddd">String </button>
<div id="result"></div>
</body>
</html>

restController

//@Controller
@RestController //ReponseBodt 같이든 없든 hello 뜸
//주소처리 결과가 자동으로 @ResponseBody 처리함
public class TestController {
	@RequestMapping("/main")
	public String xx() {
		System.out.println("main====");
		return "main";
	}
	@RequestMapping("/aaa")
	//@ResponseBody
	public String aaa(@RequestBody LoginDTO login) {
	//body 에 숨겨온 json ㄷ이터
		System.out.println("aaa===="+login);
		
		return "hello";
	}
	@RequestMapping("/bbb")
	//@ResponseBody
	public String bbb(@RequestBody ArrayList<LoginDTO> list) {
	//body 에 숨겨온 json ㄷ이터
		System.out.println("bbb===="+list);
		
		return "hello";
	}
	@RequestMapping("/ddd")
	//@ResponseBody
	public String ddd(String userid) {
		System.out.println("ddd===="+userid);
		
		return "hello";
	}
	@RequestMapping("/eee")
	//@ResponseBody
	public String eee(LoginDTO dto) {
		System.out.println("eee===="+dto.getUserid()+"\t"+dto.getPasswd());
		
		return "hello";
	}
	@RequestMapping("/ccc")
	//@ResponseBody
	public String ccc(String userid, String passwd) {
		System.out.println("eee===="+userid+"\t"+passwd);
		
		return "hello";
	}
}

@ResponseBody@RestController2@ResponseEntity

 

@RequestMapping("/ddd")
	@ResponseBody //비동기처이시 주로 사용
	public ResponseEntity<LoginDTO> ddd() {//Responseentity = @ResponseBody 역할
		//ResponseEntity 에 상태 코드 및 필요한 데이터 자장후 전달
		System.out.println("/ddd요청");
		LoginDTO login = new LoginDTO("유동주","10");
		ResponseEntity<LoginDTO> entity = ResponseEntity.status(200).body(login);
		return entity;//응답요청을 할 jsp 파일이름 test.jsp
	}

 

 

dto 에 @jsonignore 부티기

private String userid; //Form name 결과 동일학 작성
@JsonIgnore
private String passwd;

 

 

 

 

restful, pathvariable

 

RestFul_Method

restful 방식

@RequestMapping(value="/main", method= RequestMethod.GET)
	public String main() {//servlet과 동일
		System.out.println("/main");
		return "main";//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping(value="/board", method= RequestMethod.GET)
	public String get() {//servlet과 동일
		System.out.println("/get요청");
		return "main";//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping(value="/board", method= RequestMethod.POST)
	public String post() {//servlet과 동일
		System.out.println("/post요청");
		return "main";//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping(value="/board", method= RequestMethod.DELETE)
	public String delete() {//servlet과 동일
		System.out.println("/delete요청");
		return "main";//응답요청을 할 jsp 파일이름 test.jsp
	}
	@RequestMapping(value="/board", method= RequestMethod.PUT)
	public String put() {//servlet과 동일
		System.out.println("/put요청");
		return "main";//응답요청을 할 jsp 파일이름 test.jsp
	}

 

 

@RequestMapping(value= "/board/name/{username}", method=RequestMethod.GET)
	public String board(@PathVariable("username") String username) {
		System.out.println("board 호출");
		System.out.println(username);
		return "main";
	}
	@RequestMapping(value= "/board2/name/{username}/age/{age}", method=RequestMethod.GET)
	public String board(@PathVariable("username") String username,
			@PathVariable("age") int age) {
		System.out.println("board 호출");
		System.out.println(username+"\t"+age);
		return "main";
	}

 

 

<h1>main</h1>
<a href="test" >test</a><br>
<a href="board/name/홍길동" >board</a><br>
<a href="/app/board/name/홍길동" >board1</a><br>
<!-- 앞에 꼭 context 주소를 붙여야함 -->
<a href="/app/board2/name/유관순/age/30" >board2</a><br>
</body>

board 호출

홍길동

board 호출

홍길동

board 호출

유관순 30

 

mybatis

추가 dependency

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jslsolucoes/ojdbc6 -->
<dependency>
    <groupId>com.jslsolucoes</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

 

 

@Controller
public class MainController {
	@Autowired
SqlSessionTemplate session;
	
	@Autowired
	MemberService service;
	
	@RequestMapping("/test")
	@ResponseBody
	public String test() {
		System.out.println("/=====");
		System.out.println("sessionTemplate"+session);
		System.out.println("service"+service);
		
		return "aa";
	}
	@RequestMapping("/list")
	@ResponseBody
	public void list(Model m) {
		System.out.println("/list 호출");
		List<DeptDTO> list= service.selectList();
		System.out.println(list);
		m.addAttribute("list",list);
		//return "list";
		//void 도 가능
	}
	@RequestMapping("/list2")
	@ResponseBody
	public ModelAndView list2() {
		System.out.println("/list 호출");
		ModelAndView mav = new ModelAndView();
		List<DeptDTO> list= service.selectList();
		System.out.println(list);
		mav.addObject("list",list);
		mav.setViewName("list"); //list.jsp
		return mav;
		//void 도 가능
	}
	@RequestMapping("/list3")
	@ResponseBody
	public String list3(HttpServletRequest request) {
		System.out.println("/list 호출");
		
		List<DeptDTO> list= service.selectList();
		request.setAttribute("list", list);
		System.out.println(list);
		return "list";
		//void 도 가능
	}
}

 

 

mapper

<select id="list" resultType="dept">
        SELECT * FROM dept
    </select>

 

 

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 -->
	<context:annotation-config></context:annotation-config>
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />
	<default-servlet-handler/>
<view-controller  path="/" view-name="main"/>
	<!-- 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>
	
	<beans:bean class="com.controller.MainController" id="mainController"></beans:bean>
	<beans:bean class="com.dao.DeptDAO" id="deptDAO"></beans:bean>
	<beans:bean class="com.member.service.MemberService" id="memberService">  </beans:bean>
<!-- <context:component-scan base-package="com.*"/> -->
</beans:beans>

 

 

root-context.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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		<context:property-placeholder location="classpath:com/config/jdbc.properites"/>
		<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="${jdbc.driver}"></property>
	<property name="url" value="${jdbc.url}"></property>
	<property name="username" value="${jdbc.userid}"></property>
	<property name="password" value="${jdbc.passwd}"></property>
</bean>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 	<property name="dataSource" ref="dataSource"></property>
</bean>
		<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
	<property name="dataSource" ref="dataSource"></property>
	<property name="mapperLocations">
		<list>
			<value>classpath:com/config/DeptMapper.xml</value>
		</list>
	</property>
	<property name="typeAliases">
		<list>
			<value>com.dto.DeptDTO</value><!-- dto클래스에서 alias명 지정 @Alias('alias명')  -->
		</list>
	</property>
</bean>

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sessionFactory"></constructor-arg>
</bean>



</beans>

'Daily Codig Reminder' 카테고리의 다른 글

springboot  (1) 2024.02.28
myBatis2  (0) 2024.02.16
handler, response, json  (0) 2024.02.16
parameter, session  (0) 2024.02.16
parameter  (1) 2024.02.12