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>
반응형
'Days story > Day by day' 카테고리의 다른 글
[데이터자격시험] 2023년도 시험일정 (0) | 2023.02.22 |
---|---|
프로젝트 동안의 정리(22.3.16) (0) | 2022.03.16 |
2월 26일 토요일 멘토님 첫 수업 (1) | 2022.02.26 |
최근댓글