초보 자의 길 - Spring MVC (10) 프로필

16417 단어 JAVAWEB
웹 xml 파일


  
    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. properties
db.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 를 차단 합 니 다.

좋은 웹페이지 즐겨찾기