320x100

 

인터셉터:  url에서 작업도중 끼어드는 것

마샬링 : 형변환이 아닌 object객체를 json이나 xml같은 프로토콜을 변환하는 것을 의미
언마샬링은 이를 반대로 하는 것을 의미한다.

 

#egov-edu의 web.xml 내용

 

utf-8 필터를 넣어서 처리한다. 

<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>*.do</url-pattern>
</filter-mapping>

 

 lt gt 이스케이프 문자 처리를 한다. 

<filter>
    <filter-name>HTMLTagFilter</filter-name>
    <filter-class>egovframework.rte.ptl.mvc.filter.HTMLTagFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HTMLTagFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>

 

 

 

src/main/resources의 egovframework/spring/context-*.xml값을 모두 읽어들임

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

 

 

dispatcherservlet의 위치를 잡는다(화면 즉 jsp단을 책임지는 놈)

request를 처리하는 서블릿을 action이라는 이름으로 처리한다.

변경가능한것은 servlet-name만 가능하며, servlet의 이름과 mapping의 이름은 같아야한다.

그리고 url-pattern에서 모든 확장자를 처리하려면 <url-pattern>/</url-pattern>으로 바꾸면 된다.

보기는  <url-pattern>*.do</url-pattern>이므로 .do만 처리한다.

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 

 

 

#TestController 내용

@RequestMapping(value = {"/test.do","test.ddit","test"})
	public String selectTest() {
		return "jsp";
	}

 

 

#dispatcher-servlet.xml

<!--화면에서 요청한 request, response 객체 처리만 Controller에 전달하여 처리함 -->
<context:component-scan base-package="egovframework">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
    
    
    
<!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="language" />
</bean>


<!--jsp 파일이 로딩하는 Root 경로 prefix 설정된 경로 -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>

 

 

정적 리소스 경로로 접근을 처리한다. 이는 web.xml의 url-pattern을 전체 ( / ) 로 잡을시 .do로 잡았을때와는 달리

모든 것을 mapping을 잡아버리기에 이미지가 깨져버리므로 이와 같이 설정을 해야한다.

    <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
    
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
    <mvc:resources location="/img/" mapping="/images/**"/>
    <mvc:resources location="/file/" mapping="/files/**"/>

 

 

 

#FileVo.java

package egovframework.example.sample.service;

import java.io.Serializable;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;



@SuppressWarnings("serial")
public class FileVo implements Serializable {

	
	/**
	 * java jdk 1.6이하 방식에서는 밑과 같이 처리해야한다.
	 * 이와 같이 처리할때 좀 더 빠른 방식으로 파일 처리가 가능해진다.
	 */
//	private static final long serialVersionUID = 1L;
	
	
	private String fileInfo;
	private String fileFlag;

	public String getFileInfo() {
		return fileInfo;
	}

	public void setFileInfo(String fileInfo) {
		this.fileInfo = fileInfo;
	}

	public String getFileFlag() {
		return fileFlag;
	}

	public void setFileFlag(String fileFlag) {
		this.fileFlag = fileFlag;
	}

	
	//vo객체를 json스타일로 바꾸어 뿌려준다. toString을 다음과 같은 객체로 바꿈
	@Override 
	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
	}
}

 

 

 

#웹소켓을 위한 주입(pom.xml)

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0.4</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.2</version>
</dependency>
반응형
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기