@Reponsebody ,mybatis
2024. 2. 16. 18:00ㆍDaily 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 |