728x90
반응형
- servlet 설정
- post방식 한글처리를 위한 인코딩 설정
/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>SpringMVC2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- servlet 설정 -->
<servlet>
<!-- servlet-name을 기반으로 spring 파일을 찾는다. -->
<servlet-name>springmvc</servlet-name>
<!-- Libary 제공 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- load-on-startup
: Serlvet LifeCycle에 의거해서,
어플리케이션 최초 실행 시 해당 servlet을 객체 생성, init()까지 실행되도록 설정
만약 이 태그를 기입해주지 않으면, 클라이언트 최초 요청 시점에 서블릿이 초기화된다. -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- servlet-mapping 설정 -->
<servlet-mapping>
<!-- DispatcherSerlvet은 자신의 설정 파일(springMVC 설정)을
[serlvet-name]-serlvet.xml로 찾아서 로딩한다. -->
<servlet-name>springmvc</servlet-name>
<!-- 클라리언트 요청 url이 .action으로 마치는 요청은
모두 DispatcherSerlvet이 처리한다. -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- POST 방식으로 전송 시, 한글처리를 위한 인코딩 설정 -->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<!-- 모든 요청에 인코딩 처리하겠다는 의미 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Spring configure 설정
MultiActionController를 위한 설정
: 하나의 컨트롤러에서 다수의 요청을 처리하기 위해 사용
* paramName의 value를 command로 설정하면, member.vo?command=[methodName]
/springmvc-servlet.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- HandlerMapping
: 클라이언트의 요청을 처리할 실제 컨트롤러를 연결하는 객체 -->
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- ViewResolver
: 컨트롤러가 클라이언트에게 응답할 view에 대한 방식을 담당하는 객체 -->
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="/test.do" class="org.kosta.controller.TestController"></bean>
<!-- MultiActionController를 위한 설정
: 하나의 컨트롤러에서 다수의 요청을 처리하기 위해 사용
* paramName의 value를 command로 설정하면, member.vo?command=[methodName]
-->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="command"/>
</bean>
<bean id="/member.do" class="org.kosta.controller.MemberController">
<property name="methodNameResolver" ref="methodNameResolver"/>
</bean>
</beans>
Model
-- 사용하지 않음 --
View
/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>홈화면</title>
</head>
<body>
<a href="test.do">springMVC Test</a>
<br><br>
<form action="test.do" method="POST">
이름 <input type="text" name="userName" required="required">
<input type="submit" value="전송">
</form>
<hr>
<a href="member.do?command=insert">MultiActionController insert test</a><br>
<a href="member.do?command=select">MultiActionController select test</a><br>
<form action="member.do">
<input type="hidden" name="command" value="findMemberByAddress">
주소 <input type="text" name="address">
<input type="submit" value="검색">
</form>
</body>
</html>
/Views
/result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과</title>
</head>
<body bgcolor="yellow">
result page
</body>
</html>
/multi-result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MultiActionController Test</title>
</head>
<body>
MultiActionController Test result page <br>
${param.command}
</body>
</html>
Controller
/TestController.java
package org.kosta.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/*AbstractController : dispacherSevlet에서 계층구조 형성을 위해 사용한다.
* - controller라는 것을 알려주기 위해서 공통된 타입을 찾게하기 위해서다!
* model2 방식으로 할 때네는 Controller<<interface>>를 만들어서 상속받아 사용했다.
*/
public class TestController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//System.out.println("TestController 실행");
//View에서 정보 받아오기
String name = request.getParameter("userName");
System.out.println(name);
// views/result.jsp가 응답된다.
return new ModelAndView("result");
}
}
/MemberController.java
package org.kosta.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
//MultiActionController : 하나의 컨트롤러에서 여러 기능을 동작하기 위해 상속받음
public class MemberController extends MultiActionController{
// member.dao?command=insert
public ModelAndView insert(HttpServletRequest request, HttpServletResponse response) {
//System.out.println("MemberController insert");
return new ModelAndView("multi_result");
}
// member.dao?command=select
public ModelAndView select(HttpServletRequest request, HttpServletResponse response) {
//System.out.println("MemberController select");
return new ModelAndView("multi_result");
}
public ModelAndView findMemberByAddress(HttpServletRequest request, HttpServletResponse response) {
return new ModelAndView("multi_result");
}
}
[ 결과 ]
> 홈화면
> 'springMVC Test' 클릭 시,
> 폼에 이름 입력 후, 전송 누르면 화면과 console
> 'MultiActionController insert test' or 'MultiActionController select test' 클릭 시,
> 주소 입력 후, '전송' 시,
728x90
반응형
'Java Web Programming > 6. Spring | MyBatis' 카테고리의 다른 글
[Spring] 스프링 AOP Annotation 어노테이션 (0) | 2020.11.05 |
---|---|
[Spring] 스프링 IOC/DI Annotation 어노테이션 (0) | 2020.11.05 |
[Spring/MyBatis] Spring MVC Pattern 적용해보기 (0) | 2020.11.04 |
[Spring/MyBatis] has a (aggregation) 관계 시, 구현방법 연습 (0) | 2020.11.03 |
[Spring/MyBatis] JOIN 구문 연습 (inner join, outer join, group by) (0) | 2020.11.03 |