我希望在我的vaadin视图中嵌入jsp页面。请让我知道要遵循的步骤。
我已完成以下步骤:
在vaadin视图中添加了我的jsp页面,如下所示。
var monthList = new Dictionary<String, List<String>>();
foreach (DataRow dr in dsSeries.Tables[0].Rows)
{
var key = dr["MonthName"].ToString();
var value = dr["Department"].ToString();
if (!monthList.ContainsKey(key))
{
monthList.Add(key, new List<string>());
}
monthList[key].Add(value);
}
List<string> b = new List<String>();
foreach (var month in monthList.Keys)
{
b.Add(month + ": " + String.Join(", ", monthList[month])");
}
但我不知道如何在web.xml中为这个jsp包含映射。
请向我解释一下我需要放置jsp文件的步骤,如何进行映射请求
答案 0 :(得分:0)
首先,我想知道你是否正在使用Vaadin。 Vaadin的目的是通过完全用Java构建来提供Web应用程序的用户界面。因此,通常您不需要嵌入Web视图或Web内容。
BrowserFrame
小部件但有时,嵌入一些非Vaadin内容可能是有意义的。请参阅BrowserFrame
中所述的The Book of Vaadin小部件。适用于Vaadin 7.0及更高版本。
如果您的Vaadin应用程序只是更大的网站环境的一小部分,请注意Vaadin也可以用作Java Portlet。
对于portlet驱动的应用程序,LifeRay通常是used in conjunction with Vaadin的portlet环境。
答案 1 :(得分:0)
如果您的JSP页面位于一个单独的servlet中,那么Basil的回答可能是有效的,无论是否在您自己的控制之外(让我们说一个公共网页)(您可以)将其作为单独的servlet安装在您自己的服务器中)。在这两种情况下,如果它是JSP页面,PHP或其他任何东西都不会产生影响 - 在每种情况下,在任何一种情况下你都会得到简单解释的HTML。也就是说,BrowserFrame
方法可能是正确的方法,因为它是Vaadin相当于&#34; good ole&#34; HTML iframe
。
如果要嵌入JSP页面或整个 JSP应用程序,可以通过使用Servlet Mapping和webapp
文件夹来实现。唯一的缺点是你的Vaadin应用程序需要从新的路径中访问。而不是根目录让我们说你是通过http://yourdomain.com/yourVaadinApp
访问的 - 现在你需要定义/ app -or类似路径,这样你的应用就可以从{{1 }}。您必须在主UI应用类的http://yourdomain.com/yourVaadinApp/app
注释中定义它(也可以通过@WebServlet
完成):
web.xml
接下来,您可以将JSP(或JSP文件集合)放在@WebServlet(value = {"/app/*", "/VAADIN/*"}, asyncSupported = true)
文件夹中。这样,在部署应用程序时,您的JSP将可以从yourAppProjectFolder/src/main/webapp
访问(或者只是基本路径,如果您的文件是默认文档 - 取决于您的服务器或您的配置,如base path/yourFile.jsp
- ,那将是index.jsp
),或您选择的文件夹。
不幸的是,到目前为止,我还不知道如何排除&#34;排除&#34; webapp文件夹内容,而不将Vaadin应用程序基本路径映射到&#34;子路径&#34;。