熟悉的代码:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我的理解是/*地图http://host:port/context/*.
怎么样/?它肯定不会映射到http://host:port/contextroot.事实上,它会接受http://host:port/context/hello,但拒绝http://host:port/context/hello.jsp.
任何人都可以解释如何http://host:port/context/hello映射?
我用容器管理的安全性编写了简单的应用程序.问题是当我登录并打开另一个我注销的页面时,然后我回到第一页,我点击任何链接等或刷新页面我得到这个例外.我想这是正常的(或者可能不是:))因为我退出了会话被破坏了.我该怎么做才能将用户重定向到例如index.xhtml或login.xhtml,并使他免于看到错误页面/消息?
换句话说,如何在我退出后自动将其他页面重定向到索引/登录页面?
这里是:
javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
at filter.HttpHttpsFilter.doFilter(HttpHttpsFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud) 我想有条件地输出一些Facelets代码.
为此,JSTL标签似乎工作正常:
<c:if test="${lpc.verbose}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?
我想知道当前的方法是关于使用JSF 2.0(如果存在任何组件)和Java EE 6核心机制(登录/检查权限/注销)的Web应用程序的用户身份验证,其中包含用户信息保存在JPA中实体.Oracle Java EE教程在这方面有点稀疏(仅处理servlet).
这没有使用整个其他框架,如Spring-Security(acegi)或Seam,但如果可能的话,试图用新的Java EE 6平台(Web配置文件).
我有一个通用的Java方法,具有以下方法签名:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Run Code Online (Sandbox Code Playgroud)
它打开一个连接,PreparedStatement使用sql语句和queryParams变量长度数组中的参数构建一个,运行它,缓存ResultSet(在a中CachedRowSetImpl),关闭连接,并返回缓存的结果集.
我在记录错误的方法中有异常处理.我将sql语句记录为日志的一部分,因为它对调试很有帮助.我的问题是记录String变量会sql使用?而不是实际值记录模板语句.我想记录已执行(或尝试执行)的实际语句.
那么......有没有办法获得将由a运行的实际SQL语句PreparedStatement?(没有自己构建它.如果我找不到访问PreparedStatement'sSQL的方法,我可能最终会自己构建它catch.)
任何人都可以澄清我们如何在一般情况下使用,或者在现实世界中使用这个代码片段?
<f:metadata>
<f:viewParam id="id" value="#{bean.id}" />
<f:viewAction action="#{bean.init}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud) 如何HashMap在JSP中循环?
<%
HashMap<String, String> countries = MainUtils.getCountries(l);
%>
<select name="country">
<%
// Here I need to loop through countries.
%>
</select>
Run Code Online (Sandbox Code Playgroud) 我有一个动态文本文件,根据用户的查询从数据库中选择内容.我必须将此内容写入文本文件并将其压缩到servlet中的文件夹中.我该怎么做?
我正在编写一个允许用户将图像上传到服务器的应用程序.我希望每天大约有20张图片都是jpeg,可能没有编辑/调整大小.(这是另一个问题,如何在存储之前调整服务器端的图像大小.也许有人可以请求在评论中删除.NET资源等等).我现在想知道存储上传图像的最佳位置是什么.
将图像作为文件存储在文件系统中,并在表格中创建一条记录,其中包含该图像的确切路径.
或者,使用数据库服务器的"图像"或"二进制数据"数据类型将图像本身存储在表中.
我看到两者的优点和缺点.我喜欢a)因为我可以轻松地重新定位文件,只需要更改表条目.另一方面,我不喜欢在Web服务器上存储业务数据,我真的不想将Web服务器连接到任何其他保存业务数据的数据源(出于安全原因)我喜欢b)因为所有信息都是在一个地方,可以通过查询轻松访问.另一方面,数据库将很快变得非常大.外包数据可能更困难.
java ×4
jsf ×4
jsf-2 ×3
servlets ×2
binaryfiles ×1
database ×1
facelets ×1
filesystems ×1
hashmap ×1
jaas ×1
java-ee ×1
jdbc ×1
jsp ×1
jstl ×1
logout ×1
loops ×1
sql ×1
url-pattern ×1
viewaction ×1
viewparams ×1
web.xml ×1
zip ×1