초보 자의 길 - Spring MVC (10) 프로필
index.jsp
contextConfigLocation
classpath*:applicationContext-*.xml
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
DruidWebStatFilter
com.alibaba.druid.support.http.WebStatFilter
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
DruidWebStatFilter
/*
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
DruidStatView
/druid/*
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath*:mvc-dispatcher-servlet.xml
1
mvc-dispatcher
/
hibernateFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
singleSession
true
sessionFactoryBean
sessionFactory
flushMode
AUTO
hibernateFilter
/*
配置org.springframework.web.context.request.RequestContextListener:
是为了使Spring支持request与session的scope,如:
request 는 모든 HTTP 요청 에 대해 새로운 bean 을 만 들 고 이 bean 은 현재 HTTP 에 만 있 음 을 표시 합 니 다. request 내 유효, 인 스 턴 스 설정: request, session, global session 을 사용 할 때 먼저 웹 을 초기 화 하 는 웹. xml 에서 다음 과 같은 설정 을 해 야 합 니 다. Servlet 2.4 이상 의 웹 용 기 를 사용한다 면 웹 에 응 용 된 XML 성명 파일 웹. xml 에 이 listener 를 추가 해 야 합 니 다.
이 listener 를 설정 하면 SpringMVC 에서 request 대상 을 가 져 올 수 있 습 니 다.설정 후 프로그램 에서 사용 할 수 있 습 니 다:HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
그러나 request 대상 을 얻 기 위해 서 는 주해 법 을 사용 하 는 것 이 더 쉬 운 방법 입 니 다.@Autowired private HttpServletRequest request;
또는 더 직접적인 방법 은:public String hello(HttpServletRequest request,HttpServletResponse response)
org. springframework. web. filter. CharacterEncoding 필터 설정:
현재 JSP 페이지 와 JAVA 코드 에서 서로 다른 문자 집합 을 사용 하여 인 코딩 할 때 나타 나 는 폼 이 제출 한 데 이 터 를 처리 하거나 중국어 이름 파일 을 업로드 / 다운로드 하 는 중 오류 가 발생 하 는 문 제 를 처리 하기 위해 문자 집합 을 설정 합 니 다.forceEncoding 설정: request 에 문자 집합 이 지정 되 었 을 때 endcoding 에 대응 하 는 문자 집합 을 request 에 설정 할 지 여부 입 니 다.기본 값 은 false 입 니 다. request 에서 인 코딩 방식 을 지정 하면 encoding 으로 지정 한 인 코딩 방식 이 적용 되 지 않 습 니 다.이것 은 ContextLoader Listener 다음 에 설정 해 야 합 니 다.
org. springframework. orm. hibernate 4. support. OpenSessionInViewFilter 설정: Spring 은 우리 에 게 OpenSession InViewFilter 라 는 필 터 를 제공 합 니 다. 그 는 표준 Servlet Filter 이기 때문에 우 리 는 그것 을 규범 에 따라 웹. xml 중국 측 에 배치 하여 사용 할 수 있 습 니 다.사용 중 에 우 리 는 Spring 의 Hibernate Dao Support 를 사용 하여 개발 해 야 한다. 즉, 우리 의 dao 층 의 종 류 는 모두 Hibernate Dao Support 에 계승 되 어야 한다. 그 중에서 Spring 이 Hibernate 의 Session 을 제어 하 는 것 은 요청 이 올 때 열 리 고 갈 때 닫 혀 서 우리 가 데이터 대상 을 방문 할 때의 안정성 을 확보 해 야 한다.OpenSsionInViewFilter 의 주요 기능 은 Hibernate Session 과 완전한 요청 과정 에 대응 하 는 스 레 드 를 연결 하 는 것 입 니 다.Open Session In View 는 request 에서 session 을 현재 thread 에 연결 하 는 동안 hibenate session 을 open 상태 로 유지 하여 session 을 request 의 전체 기간 동안 사용 할 수 있 도록 합 니 다. 예 를 들 어 View 층 에서 PO 도 lazy loading 데이터, 예 를 들 어 ${copany. employes}.View 층 논리 가 완 료 된 후에 야 Filter 의 doFilter 방법 이나 Interceptor 의 post Handle 방법 으로 session 을 자동 으로 닫 습 니 다.프로젝트 에서 Spring + Hibernate 를 사용 할 때 OpenSession InViewFilter 를 켜 서 로드 지연 오 류 를 막 습 니 다. 그러나 우리 가 OpenSession InViewFilter 필 터 를 켰 을 때 Flushmode 는 기본 으로 MANUAL 로 설정 되 어 있 습 니 다. Flushmode 가 MANUAL 또는 NEVEL 이면 작업 과정 에서 hibernate 는 사 무 를 readonly 로 설정 하기 때문에 증가 하고 있 습 니 다.작업 을 삭제 하거나 수정 하 는 과정 에서 flushmode 를 AUTO 로 설정 해 야 합 니 다.
OpenSession InView 모드 를 사용 하면 Spring 은 Session 의 열 림 과 닫 기 를 관리 하 는 데 도움 을 줄 것 입 니 다. 따라서 DAO 에서 Hibernate Dao Support 를 통 해 받 은 getSession () 방법 은 현재 스 레 드 에 연 결 된 안전 한 Session 입 니 다. 즉, 사용 하면 마지막 으로 Filter 에서 통일 적 으로 닫 습 니 다.그러나 받 은 Hibernate 의 Session 으로 session. setFlushmode (Flushmode. NEVER) 가 설정 되 었 습 니 다.따라서 session. flush () 를 직접 호출 하지 않 으 면 Hibernate session 은 언제든지 flush 의 상태 가 데이터베이스 로 변 하지 않 습 니 다.따라서 데이터베이스 업무 의 설정 은 매우 중요 하 다.(org. hibenate. Transaction. comit () 를 호출 할 때 session. flush () 를 촉발 하 는 것 을 알 고 있 습 니 다. OpenSession InView 모드 를 사용 할 때 올 바른 설정 이 없어 서 밑바닥 에 Flushmode. NEVER 와 관련 된 이상 한 점 을 많이 본 적 이 있 습 니 다.
2. applicationContext. xml 파일
org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory true true org.hibernate.dialect.MySQL5Dialect update true true true 1, false 0, yes 'Y', no 'N' 三、mvc-dispatcher-servlet.xml配置(名字自定)
4. database. propertiesdb.driverClassName =com.mysql.jdbc.Driver db.url = jdbc:mysql://localhost:3306/ ?useUnicode=true&characterEncoding=UTF-8 db.user = *** db.password = ***
후기
applicationContext. xml 와 dispatch - servlet. xml 은 두 부자 관계 의 문맥 을 형성 했다.1) 하나의 bean 이 두 파일 에서 모두 정의 되면 (예 를 들 어 두 파일 에서 component scan 스 캔 이 같은 package 를 정의 합 니 다) spring 은 application context 와 servlet context 에서 하나의 인 스 턴 스 를 생 성 합 니 다. 그들 은 서로 다른 컨 텍스트 공간 에 있 고 그들의 행동 방식 은 다 를 수 있 습 니 다.2) 애플 리 케 이 션 context 와 servlet context 에 같은 @ Service 인 스 턴 스 가 존재 한다 면 contrller (servlet context 에서) 가 @ Resource 를 통 해 인 용 될 때 servlet context 의 인 스 턴 스 를 우선 선택 합 니 다.그러나 가장 좋 은 방법 은 applicationContext 와 dispatcher - servlet 에서 정의 하 는 bean 은 중복 되 지 않 는 것 이 좋 습 니 다. dispatcher - servlet 은 contrller 형식의 bean 만 정의 하 는 것 이 좋 습 니 다.applicationContext. xml 는 spring 전역 설정 파일 로 spring 특성 을 제어 합 니 다.dispatcher - servlet. xml 는 spring mvc 에 있 는 컨트롤 러, uri 퍼 가기 view 를 차단 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.