Прежде всего проверьте и убедитесь, что все ваши ресурсы хранятся в правильном каталоге. Для весенней загрузки страницы jsp должны храниться в каталоге src->main->webapp->WEB-INF->view->*.jsp
.
У вас должно быть следующеезависимости, добавленные в pom для правильной компиляции jsp при использовании встроенного tomcat:
<!-- JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- To compile JSP files -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
Теперь нам нужно сообщить Spring, где находятся файлы jsp, у нас может быть два подхода для этого:
Добавить записи в application.properties
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
Здесь мы можем указать папку, в которой следует ожидать jsp-файлы, а также определить представление.или
Настройка InternalResourceViewResolver для обслуживания страниц JSP
@Configuration
@EnableWebMvc
@ComponentScan
public class MvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
registry.viewResolver(resolver);
}
}
Теперь для регистрация сервлетов :
ServletRegistrationBean
используется для регистрации сервлетов в контейнере Servlet 3.0 + .Нам нужно создать bean-компонент ServletRegistrationBean
в нашем JavaConfig.Найдите некоторые методы ServletRegistrationBean, используемые для настройки сервлета. setServlet (): Устанавливает сервлет для регистрации. addUrlMappings (): Добавить сопоставления URL для сервлета. setLoadOnStartup: Устанавливает приоритет загрузки сервлета при запуске.
Предположим, у нас есть два сервлета как HelloCountryServlet
и HelloStateServlet
, затем мы зарегистрируем их в Spring Boot с использованием ServletRegistrationBean следующим образом:
@Configuration
public class WebConfig {
@Bean
public ServletRegistrationBean<HttpServlet> countryServlet() {
ServletRegistrationBean<HttpServlet> servRegBean = new ServletRegistrationBean<>();
servRegBean.setServlet(new HelloCountryServlet());
servRegBean.addUrlMappings("/country/*");
servRegBean.setLoadOnStartup(1);
return servRegBean;
}
@Bean
public ServletRegistrationBean<HttpServlet> stateServlet() {
ServletRegistrationBean<HttpServlet> servRegBean = new ServletRegistrationBean<>();
servRegBean.setServlet(new HelloStateServlet());
servRegBean.addUrlMappings("/state/*");
servRegBean.setLoadOnStartup(1);
return servRegBean;
}
}
Для каждого сервлета мы создаем компонент ServletRegistrationBean .И класс сервлетов будет выглядеть так:
public class HelloCountryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
doGet(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Hello India!</h3>");
}
}
Это один из подходов.
Другой метод для регистрации сервлетов в весенней загрузке использует аннотации: @ ServletComponentScan и @ WebServlet .@ServletComponentScan
в Spring Boot будет сканировать сервлеты, помеченные @WebServlet
, фильтры, помеченные @WebFilter
, и прослушиватели, помеченные @WebListener
. Аннотация @ServletComponentScan используется в JavaConfig на уровне класса.@ServletComponentScan сканирует сервлеты, фильтры и прослушиватели только с использованием встроенного веб-сервера .Найдите сервлеты, аннотированные @ WebServlet.
Таким образом, более ранний HelloCountryServlet сервлет может быть представлен в виде:
@WebServlet(urlPatterns = "/country/*", loadOnStartup = 1)
public class HelloCountryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
doGet(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Hello India!</h3>");
}
}
и предоставлять аннотацию ServletComponentScan, например:
@ServletComponentScan
@SpringBootApplication
public class SpringBootAppStarter {
public static void main(String[] args) {
SpringApplication.run(SpringBootAppStarter.class, args);
}
}