SpringMVC 간단 한 점프 방법 실현(주제)
개인 적 으로 구축 과정 을 다시 연습 하 는 것 을 권장 합 니 다.귀 찮 으 면 이전 프로젝트 를 직접 복사 할 수 있 지만 pom.xml 의 정 보 를 수정 해 야 합 니 다.
<groupId>com.hanpang.springmvc</groupId>
<artifactId>springmvc-demo01</artifactId>
<version>0.0.1-SNAPSHOT</version>
1.핵심 설정 클래스 와 로드 클래스
package com.hanpang.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.hanpang.**.web")
public class WebConfig {
}
package com.hanpang.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {WebConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
2.자바 웹 단계 의 전환 방식SpringMVC 의 방법 중의 형 삼 을 주의 하 세 요.프레임 워 크 는 우리 에 게 실례 화 된 조작 을 완성 해 주 었 습 니 다.
package com.hanpang.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller//
public class Demo01Controller {
@RequestMapping(path="/test01")
public ModelAndView _ (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
System.out.println(" ");
request.getRequestDispatcher("/WEB-INF/jsp/demo01.jsp").forward(request, response);
return null;
}
@RequestMapping(path="/test02")
public ModelAndView _ (HttpServletRequest request,HttpServletResponse response) throws IOException {
System.out.println(" ");
response.sendRedirect(request.getContextPath()+"/view/result01.jsp");
return null;
}
}
노트:이런 방식 은 거의 사용 하지 않 습 니 다.단지 간단 한 프 리 젠 테 이 션 과 돌 이 켜 볼 뿐 입 니 다.적어도 우 리 는 이런 방식 으로 Servlet API 를 얻 을 수 있 습 니 다!!3.Controller 가 JSP 로 이동 하 는 방식 시연
예제 마지막 에 우 리 는 JSP 의 보기 해석 기 를 추가 할 것 입 니 다.시작 단 계 는 전통 적 인 방식 에 따라 점진 적 인 과정 이 있 습 니 다.
package com.hanpang.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller//
public class Demo01Controller {
@RequestMapping(path="/test03")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("/WEB-INF/jsp/demo01.jsp");
return mav;
}
@RequestMapping(path="/test04")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("redirect:/view/result01.jsp");
//
//mav.setViewName(UrlBasedViewResolver.REDIRECT_URL_PREFIX+"/view/result01.jsp");
return mav;
}
}
자바 웹 단계 와 방식 이 다 르 지 않 은 것 같 습 니 다.방향 을 바 꿀 때 간단 한 접 두 사 를 설정 하 였 습 니 다.4.Controller 에서 Controller 로 이동 하 는 방식 시연
하나의 Servlet 에서 다른 Servlet 으로 이동 하 는 것 과 유사 합 니 다.
package com.hanpang.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller//
public class Demo01Controller {
@RequestMapping(path="/test05")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("/test03");
return mav;
}
@RequestMapping(path="/test06")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("redirect:/test04");
return mav;
}
}
5.JSP 의 보기 해석 기 추가위의 프 리 젠 테 이 션 과정 에서 Model AndView 에서 setView Name 은 점프 를 완성 하 는 데 사 용 된 것 을 발 견 했 습 니 다.이 안에 전 달 된 데 이 터 는 문자열 이지 만 처리 방식 이 다 릅 니 다.점프 경로 에 접두사 redirect 가 있 을 때 처리 방식 이 다 릅 니 다.
그리고 만약 에 우리 가/WEB-INF/jsp/demo 01.jsp 형식의 문자열 이 여러 개 있 을 때 우 리 는 공공 적 인 부분 이 매우 많다 는 것 을 알 게 되 었 다.SpringMVC 는 우리 에 게 전문 적 인 처 리 를 제공 해 주 었 다. 컨트롤 러 JSP 페이지 전송 요청 같은 부류.
내 설명 에 주의 하 십시오:당신 이 전달 한 문자열 에 접두사 표시 가 설정 되 어 있 지 않 은 것 을 발견 하면 기본적으로 JSP 보기 해석 기 를 사용 하여 처리 하고 전송 을 요청 하 는 작업 을 완료 합 니 다.
설명:핵심 설정 클래스 설정
package com.hanpang.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.hanpang.**.web")
public class WebConfig {
@Bean//
public ViewResolver viewResolver() {
InternalResourceViewResolver jspViewResolver = new InternalResourceViewResolver();
jspViewResolver.setViewClass(JstlView.class);//springmvc jstl
jspViewResolver.setPrefix("/WEB-INF/");
jspViewResolver.setSuffix(".jsp");
return jspViewResolver;
}
}
**NOTE:**방법 상의 주해@Bean방법 은 XML 의 코드 와 같다.
<bean id="jspResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
컨트롤 러 점프 JSP 코드 개선이 보기 해석 기 는 JSP 요청 에 대해 서 만 전송 할 수 있 습 니 다.재 설정 이 잘못 되 었 습 니 다.코드 설명 내용 에 주의 하 십시오.
@RequestMapping(path="/test03")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
//mav.setViewName("/WEB-INF/jsp/demo01.jsp");
// : , JSP ,
// prefix+"jsp/demo01"+suffix => /WEB-INF/jsp/demo01.jsp
mav.setViewName("jsp/demo01");//
return mav;
}
@RequestMapping(path="/test04")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
//
mav.setViewName("redirect:/view/result01.jsp");
return mav;
}
컨트롤 러 점프 컨트롤 러 코드 개선
@RequestMapping(path="/test05")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("/test03");
return mav;
}
JSP 보기 해상도 기 를 설정 한 후,상기 코드 를 다시 테스트 하여,방문 결 과 를 보고 깜짝 놀 랐 습 니 다.앞서 말 한"/test 03"에 맞 는 문자열 입 니 다.기본적으로 JSP 보기 해석 기 를 사용 하여 처리 합 니 다.어떻게 개선 합 니까?
접두사"forward:"를 설정 할 수 있 습 니 다.개선 코드 는 다음 과 같 습 니 다.
@RequestMapping(path="/test05")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("forward:/test03");
//
//mav.setViewName(UrlBasedViewResolver.FORWARD_URL_PREFIX+"/test03");
return mav;
}
문자열 이 forward:수식 을 사용 한 것 을 발견 하면 처리 상황 은 Controller 요청 에서 다른 Controller 로 바 뀌 었 습 니 다.방향 을 바 꾸 면 코드 는 다음 과 같 습 니 다.
@RequestMapping(path="/test06")
public ModelAndView (){
ModelAndView mav = new ModelAndView();
mav.setViewName("redirect:/test04");
return mav;
}
6.InternalResourceView Resolver 부록Internal ResourceView Resolver:URLBasedView Resolver 의 하위 클래스 이기 때문에 URLBasedView Resolver 가 지원 하 는 기능 은 모두 지원 합 니 다.
실제 응용 에서 Internal ResourceView Resolver 도 가장 광범 위 하 게 사용 되 는 보기 해석 기 입 니 다.그렇다면 Internal ResourceView Resolver 는 자신 만 의 특성 이 있 습 니까?
말 그대로 Internal ResourceView Resolver 를 내부 자원 보기 해석 기로 해석 할 수 있 습 니 다.이것 이 바로 Internal ResourceView Resolver 의 한 특성 입 니 다.
Internal ResourceView Resolver 는 되 돌아 오 는 보기 이름 을 Internal ResourceView 대상 으로 해석 합 니 다.Internal ResourceView 는 Controller 프로세서 방법 으로 되 돌아 오 는 모델 속성 을 해당 하 는 request 속성 에 저장 한 다음 RequestDispatcher 를 통 해 서버 에서 요청 forword 를 대상 URL 로 다시 설정 합 니 다.
예 를 들 어 Internal ResourceView Resolver 에서 prefix=/WEB-INF/,suffix=.jsp 를 정의 한 다음 요청 한 Controller 프로세서 방법 으로 되 돌아 오 는 보기 이름 을 test 로 정의 하면 Internal ResourceView Resolver 는 test 를 Internal ResourceView 대상 으로 분석 하고 되 돌아 오 는 모델 속성 을 해당 하 는 HttpServletRequest 속성 에 저장 합 니 다.그리고 RequestDispatcher 를 이용 하여 서버 에서 요청 forword 를/WEB-INF/test.jsp 로 보 냅 니 다.이것 이 바로 Internal ResourceView Resolver 의 매우 중요 한 특성 입 니 다.우 리 는/WEB-INF/아래 에 저 장 된 내용 은 request 요청 을 통 해 직접 요청 할 수 없다 는 것 을 알 고 있 습 니 다.안전성 을 고려 하여 jsp 파일 을 WEB-INF 디 렉 터 리 에 두 고 Internal ResourceView 는 서버 에서 뛰 어 다 니 는 방식 으로 이 문 제 를 잘 해결 할 수 있 습 니 다.다음은 Internal ResourceView Resolver 의 정의 입 니 다.이 정의 에 따라 논리 적 보기 이름 이 test 일 때 Internal ResourceView Resolver 는 정 의 된 접두사 와 접 두 사 를 붙 여'/WEB-INF/test.jsp'형식 으로 구성 한 다음 Internal ResourceView 의 url 로 Internal ResourceView 대상 을 새로 만 듭 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssm 프레임워크 업로드 이미지 로컬 및 데이터베이스에 저장 예시본고는 ssm 프레임워크 업로드 이미지를 로컬과 데이터베이스에 저장하는 예시를 소개하고 주로 Spring+SpringMVC+MyBatis 프레임워크를 사용하여 ssm 프레임워크 업로드 이미지의 실례를 실현했다. 구체...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.