我在NetBeans中看到一个功能,用于为JSP
选择Servlet
,web.xml
中的结果XML是这样的:
<servlet>
<servlet-name>TestServlet</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
这是什么意思?它的用途是什么? 它是否像ASP .NET中的代码架构一样?
答案 0 :(得分:31)
这是什么意思?它的用途是什么?
它用于将servlet的规范名称(不是您编写的实际Servlet类)映射到JSP(恰好是一个servlet)。它本身并不是很有用。您经常需要将servlet映射到url-pattern,如下所示:
<servlet>
<servlet-name>TestServlet</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<!--mapping-->
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
现在,所有到达/test/*
的请求都将由JSP提供服务。
此外,servlet规范还指出:
jsp-file
元素包含完整 Web中JSP文件的路径 应用程序以“/”开头。如果一个 指定了jsp-file
并且load-onstartup
元素存在, 那么JSP应该是预编译的 加载。
因此,它可以用于预编译servlet,以防你的构建过程没有预编译它们。请记住,以这种方式预编译JSP并不是最佳实践。理想情况下,您的构建脚本应该处理这些问题。
它是否像ASP .NET中的架构代码一样?
不,如果您正在寻找代码隐藏架构,与此类似,那就是JSF提供的Managed Beans支持。
答案 1 :(得分:7)
JSP 是 servlet。 JSP是一种模板技术,它解析.jsp文件并生成servlet .java文件。完成后,.java文件将编译为在servlet / JSP引擎上下文中运行的.class文件。
所有web.xml文件正在将.jsp文件与servlet名称相关联。还有更多:你必须将.jsp映射到一个URL,这样servlet / JSP引擎就可以知道何时调用它。
我不太清楚ASP或.NET是否与“代码隐藏”相同。
答案 2 :(得分:4)
JSP是一种servlet。 JSP页面被编译成servlet。此servlet在任何java Web服务器提供的servlet容器中运行。
在web.xml中,<servlet>
标记用于命名名称servlet类和jsp文件。然后,您可以根据自己的URL映射这些servlet和jsp文件。
<servlet>
<servlet-name>hello</servlet-name>
<jsp-file>/jsp/hello.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
如果您的hello.jsp文件位于JSP文件夹下。当您尝试使用/ helloworld打开URL时。它将打开页面hello.jsp。