IDEA 2017.3 新版本中创建 JSF Web 应用程序缺少 web.xml 的解决办法

IDEA 2017.3 新版本中默认创建一个 Web 应用程序很可能不会自动创建 web.xml 文件。虽然说从 JavaEE 6.0 开始 Servlet 3.0 规范中就新增了一些注解可以免去传统 web.xml 中的设置,但是这也有局限性。比如,针对 JSF 应用程序,必须在 web.xml 中增加系统内建的 JSF Facelets Servlet 的配置以及部署后自动启动等设置,而且包括 context-param、welcome-file-list 等等并没有 Servlet 3.0 的对应注解。Servlet 3.0 中新增的 @WebServlet 注解只是对你自己派生定义的 Servlet 起作用,对于系统内置的 JSF Facelets Servlet 就注解配置了,所以还是需要 web.xml 的。如果 IDEA 2017.3 没有帮我们自动生成适合 JSF 的 web.xml,那就需要我们自己手动创建了。

1. 创建 web.xml

在 IDEA 中为一个 Web 应用程序 Module 创建 web.xml,可以在 Project Structur 对话框中,找到目标 Module,它包含一个 Web 子模块,点击该 Web 子模块,右边的 Deployment Descriptors 中添加一个 web.xml,注意选择其版本为 3.1 最新版,然后修改其所在路径为你的 Module 的绝对路径加上它自己的完整路径,类似如下这样:/xxx/xxx/web/WEB-INF/web.xml。

2. 在 web.xml 中增加必要的常规配置

新创建的 web.xml 除了名字空间等基本配置外,其余都是空白的,需要针对 JSF Web 应用在 web-app 标签范围内增加一些常规基本配置,如下:

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

上述这些是 JSF Web 应用在 web.xml 中最基本的通用配置。

原文地址:https://www.cnblogs.com/cyberniuniu/p/8278884.html

时间: 2024-10-11 07:04:59

IDEA 2017.3 新版本中创建 JSF Web 应用程序缺少 web.xml 的解决办法的相关文章

iis中浏览网站时,出现“无法显示xml”的解决办法

使用IIS调试.aspx程序时IE提示以下错误: 无法显示 XML 页.         使用 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试.         处理资源 'http://localhost/ 时出错.第 1 行,位置: 2          <%@ Page Language="C#" AutoEventWireup="true"   CodeFile="Main.aspx.cs" Inherits

Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor

在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编写了一个示例应用程序,演示了如何使用C#.本地API和Web技术编写iOS及Android应用. Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor,布布扣,bubuko.com

.net中Web应用程序和web网站的区别

.net中Web应用程序和web网站的区别 Scenario Web Application Project Web Site Project Project definition 跟 Visual Studio .NET 2003 类似,由于项目文件的存在,只有被项目文件所引用的文件才会在Solution Explorer中出现.而且只有这些文件才会被编译.可以很容易的把一个ASP.NET应用拆分成多个Visual Studio项目.可以很容易的从项目中和源代码管理中排除一个文件. 一个目录结

关于在Clion中创建解决方案、项目与源/头文件的解决方法

关于在Clion中创建解决方案.项目与源/头文件的解决方法 在windows端我们经常使用的集成编译器是Microsoft Visual Studio(以下简称VS),一些用户使用mac端时,由于VS不支持macOS,很多人会选择使用虚拟机或者安装双系统来进行工作,但个人感觉这样做会对系统的性能造成一定程度的降低,这里就浅讲一下如何在Clion中创建与VS类似的解决方案 如何在Clion中创建解决方案 Clion由于使用的是波兰的C++编译器,这就导致一些文件内容编码类型的不同.在个人理解中,C

Web应用程序和Web网站

在牛腩接近尾声调试代码时,有时调试半天也调不出个什么效果,无奈之举,先和源码对比一下,发现我的web层中每个网页下面多个aspx.designer.cs 文件(设计器文件),网上说有这个文件说明你这个项目是web应用程序而不是WEB网站,而普通的WEB网站是aspx(网页信息)+cs(后台代码)的.这是什么情况?我都快哭了,难不成从开始我建立的项目就是错的,又回头看视频中最开始建立项目的阶段,后来证明我的假设是对的,疑问又来了,可是我的绝大部分功能也都可以实现的啊,那他们两个究竟有什么不同,相互

web应用程序和web服务

我们在建立网站服务时,有两种不同的web开发模式: 一.web应用程序(web application):web应用程序是透过http请求来存取web服务器的网页,或执行服务端网页技术的程序,例如:ASP,ASP.NET,JSP,PHP. 二.web服务(web services):透过通讯协定SOAP或RESTful api提供资料交换和工作分享,这也是一种web应用程序,只不过是透过web服务来执行. web应用程序(web application) web应用程序简单来说就是一组网页(包含

Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:

Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:常见问题:HTTP 错误 500.0 - Internal Server Error无法显示页面,因为发生内部服务器错误.模块 IsapiModule 通知 ExecuteRequestHandler 处理程序 AboMapperCustom-20607 错误代码 0x800700c1 请求的 URL http://localhost:80/index.php 物理路径 D:\wwwroot\777t\i

金蝶K3无法创建数据库,请检查目录的错误的解决办法。

无法创建数据库!请检查目录C:\XXX\DATA是否存在,以及系统空间是否充足,或SQL Server服务的启动用户不具备<K3ERP\DBFILE>文件夹的写权限,请修改Windows服务中SQL Server服务的启动用户为Power User组以上的成员. 分析:1.安装路径下的[K3Erp]文件是否有Everyone 权限. 2.确认在安装服务器时,[数据库服务部件是否安装]. 文件夹右键属性没有"安全"选项卡 打开"我的电脑" => 工具

【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro