javaweb应用程序中的URL映射
在一个简单的JavaWeb应用程序中,我们可以以与Spring的InternalResourceViewResolver类似的方式进行JSP和HTML URL映射,在Spring的InternalResourceViewResolver中,我们使用前缀和后缀来映射URL 映射应按以下步骤进行:-javaweb应用程序中的URL映射,java,spring,jsp,Java,Spring,Jsp,在一个简单的JavaWeb应用程序中,我们可以以与Spring的InternalResourceViewResolver类似的方式进行JSP和HTML URL映射,在Spring的InternalResourceViewResolver中,我们使用前缀和后缀来映射URL 映射应按以下步骤进行:- mysite.com/home ==> /index.html mysite.com/help ==> /help.html mysite.com/view/form ==> /jsp
mysite.com/home ==> /index.html
mysite.com/help ==> /help.html
mysite.com/view/form ==> /jsp/form.jsp
mysite.com/view/user ==> /jsp/user.jsp
我知道我们可以在web.xml中进行JSP映射,如:-
<servlet>
<servlet-name>formpage</servlet-name>
<jsp-file>/jsp/form.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>formpage</servlet-name>
<url-pattern>/view/form</url-pattern>
</servlet-mapping>
格式页
/jsp/form.jsp
格式页
/视图/表格
但是这里没有前缀和后缀属性
我们如何像上面那样概括jsp和html映射
编辑:
Spring示例:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
您可以在(第115ff页,即PDF中的137ff页)中找到servlet映射的规则。您可以将*
用作前缀或后缀,但不能在路径内部使用。由于您的映射(作为一般规则;可以手动创建特定的映射,但我认为这不是您想要的),因此您需要使用另一种解决方案(如Spring;dispatcher servlet正是因为此限制而创建的)或者提供您自己的默认servlet来为您执行此操作。我以前(12年前)所做的是创建自定义dispatcher servlet并使其处理所有操作
<servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
您可能会受到启发,或者寻找适合您的web框架。现在,
若您想访问这个视图,那个么它应该像mysite.com/view/form一样,而不是像mysite.com/jsp/form.jsp一样
在web.xml中创建url模式,如下所示
<url-pattern>/</url-pattern>
以下是我所做的,很多答案都很好,但我需要一个纯Java Web应用程序解决方案,以下是我所做的:- 我创建了一个Servlet过滤器,
doFilter
方法如下:-
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String uri = ((HttpServletRequest) request).getRequestURI();
String path = uri.replace(
((HttpServletRequest) request).getContextPath(), "");
if (path.startsWith("/view/")) {
String rd = path.replace("/view/", "/jsp/") + ".jsp";
request.getRequestDispatcher(rd).forward(request, response);
} else {
chain.doFilter(request, response);
}
}
你想问什么?可以直接访问
web inf
之外的资源。JSP文件是在服务器中预编译的。我不想直接访问它们,目前我正在以mysite.com/JSP/form.JSP
的形式访问JSP页面。现在,我想使用此URLmysite.com/view/form
访问同一页面。您需要在发布时将其映射到web.xml
。这不管用吗?是的,它管用,但我需要一个在Spring中的一般规则,请参见编辑部分中的示例。您可以检查servletfilters@Kaushik-你需要更多信息吗?
<url-pattern>/</url-pattern>
@Controller
@RequestMapping("/view/form")
public class FormController {
/* actual Code here
*/
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String uri = ((HttpServletRequest) request).getRequestURI();
String path = uri.replace(
((HttpServletRequest) request).getContextPath(), "");
if (path.startsWith("/view/")) {
String rd = path.replace("/view/", "/jsp/") + ".jsp";
request.getRequestDispatcher(rd).forward(request, response);
} else {
chain.doFilter(request, response);
}
}