在大多数网站上,当用户要提供用户名和密码login到系统时,有一个checkbox如“保持login状态”。 如果选中该框,则会使您从同一个Web浏览器的所有会话中login。 我如何在Java EE中实现相同的function? 我正在使用基于FORM的容器pipe理身份validation与JSFlogin页面。 <security-constraint> <display-name>Student</display-name> <web-resource-collection> <web-resource-name>CentralFeed</web-resource-name> <description/> <url-pattern>/CentralFeed.jsf</url-pattern> </web-resource-collection> <auth-constraint> <description/> <role-name>STUDENT</role-name> <role-name>ADMINISTRATOR</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>jdbc-realm-scholar</realm-name> <form-login-config> <form-login-page>/index.jsf</form-login-page> <form-error-page>/LoginError.jsf</form-error-page> </form-login-config> </login-config> <security-role> <description>Admin who has ultimate power over everything</description> <role-name>ADMINISTRATOR</role-name> </security-role> <security-role> <description>Participants of the social networking Bridgeye.com</description> <role-name>STUDENT</role-name> </security-role>
我觉得在Java EE 6规范中有一点点混乱。 有几组注释。 我们有像@Stateful和@Stateless这样的javax.ejb注释来创buildEJB。 还有一个@javax.annotation.ManagedBean来创build一个托pipe的bean。 javax.enterprise.context有注释,如@SessionScoped和@RequestScoped 。 在javax.faces.bean包中还有@ManagedBean和@SessionScoped / @RequestScoped注解。 为了使事件更复杂,有一个包含@Named注释的javax.inject包。 有人可以描述他们是如何相互关联? 我在哪里可以使用@ @EJB ,@ @Inject或@ManagedPropery注入其他豆?
我正在使用JSF,PrimeFaces,Glassfish和Netbeans构build我的第一个Java EE应用程序。 因为我是新手,所以我可能会错误地接近核心问题。 核心问题:我想要安全地维护用户的信息。 关于应该在JSF会话bean还是有状态会话EJB中维护它们似乎存在冲突。 我正在尝试使用有状态会话EJB,因为它更安全。 问题是,我的应用程序似乎创build该bean的多个实例,当我期望它创build一个并重新使用它。 如果我刷新页面,它运行@PostConstruct和@PostActivate 3次,所有这些都使用不同的实例。 然后,当我重新部署应用程序时,它们全部被破坏。 我误解了它应该如何工作或configuration错误吗? 我将尝试显示一个裁减的代码示例: basic.xhtml : <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core"> <h:head> <title>Facelet Title</title> </h:head> <h:body> Hello from Facelets <c:if test="#{loginController.authenticated}"> Authenticated </c:if> <c:if test="#{loginController.authenticated}"> Authenticated </c:if> <c:if test="#{loginController.authenticated}"> Authenticated </c:if> </h:body> </html> LoginController : @Named(value […]
我无法find一个明确的答案,以确定是否在会话范围内的JSF托pipebean中产生线程是安全的。 线程需要调用无状态EJB实例上的方法(dependency injection到托pipebean)。 背景是,我们有一个需要很长时间才能生成的报告。 这导致HTTP请求超时,因为我们无法更改服务器设置。 所以这个想法是开始一个新的线程,让它生成报告并暂时存储它。 同时,JSF页面显示一个进度条,轮询托pipebean直到生成完成,然后再次请求下载存储的报告。 这似乎工作,但我想确定我在做什么不是黑客。
我试图通过注释将无状态EJB注入我的JAX-RS web服务。 不幸的是,EJB是null ,当我尝试使用它时,我得到一个NullPointerException 。 @Path("book") public class BookResource { @EJB private BookEJB bookEJB; public BookResource() { } @GET @Produces("application/xml") @Path("/{bookId}") public Book getBookById(@PathParam("bookId") Integer id) { return bookEJB.findById(id); } } 我究竟做错了什么? 以下是关于我的机器的一些信息: Glassfish 3.1 Netbeans 6.9 RC 2 Java EE 6 你们可以举个实例吗?
目前,我正在使用JSF 2.0,Tomcat 7和MongoDB开发Web项目。 我有一个很大的问题,就是如何处理数据库中的用户的会话pipe理和authentication/授权。 我想要的结构如下:只有login的用户可以创build事件,每个人都可以看到创build的事件。 create.xhtml – >仅适用于login用户。 events.xhtml – >公开为每个人。 我正在计划的基本结构是: 检查页面是否需要login用户(例如create.xhtml ) 如果是,请检查用户是否login 如果用户未login,请转到login.xhtml 如果成功login,请回到请求的页面 保持“用户已login”信息,除非用户单击注销button。 (在那里我猜@SessionScoped进场) 问题是: 这样做的较简单的方法是什么? 我应该在哪里使用@SessionScoped注释? 在Create.java或LoginManager.java ? 春季安全看起来有点复杂,我真的需要吗? 如果是的话,你能解释一下实现如何与JSF 2.0和Mongo DB一起工作吗?
我正在使用以下源代码结构处理Java EE Web应用程序: src/main/java <– multiple packages containing java classes src/test/java <– multiple packages containing JUnit tests src/main/resources <– includes properties files for textual messages src/main/webapp/resources <– includes CSS, images and all Javascript files src/main/webapp/WEB-INF src/main/webapp/WEB-INF/tags src/main/webapp/WEB-INF/views 我感兴趣的是WEB-INF ,它包含web.xml ,用于设置servlet的XML文件,Spring bean接线上下文以及JSP标签和视图。 问题的标题是基本的,但是我想了解的是约束/定义这个结构。 例如,JSP文件总是必须在WEB-INF或者它们可能在其他地方? 还有什么可以在WEB-INF ? 维基百科的WAR文件入口提及Java类的类和JAR文件的lib – 不确定当除了其他源文件位置之外还需要这些文件时,我已经完全掌握了。
我想知道expression式语言(EL)之间的详细区别。 有JSP EL,JSF EL和Unified EL。 我想知道EL背后的历史,以及Java EE应用程序中使用的最新的EL。 所有视图技术在最新版本中都是EL通用的吗?
我在两个不同的容器(Tomcat和Jetty)上部署Web应用程序,但是它们的默认servlet用于处理我想要使用的URL结构( 详细信息 )。 因此,我正在寻找在webapp中包含一个小的servlet来提供自己的静态内容(图像,CSS等)。 该servlet应该具有以下属性: 没有外部依赖性 简单可靠 支持If-Modified-Since标题(即自定义getLastModified方法) (可选)支持gzip编码,etags,… 这样的servlet可用吗? 我能find的最接近的是Servlet书中的例子4-10 。 更新:我想使用的URL结构 – 如果您想知道的话 – 很简单: <servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/static/*</url-pattern> </servlet-mapping> 所以所有的请求都应该传递给主Servlet,除非它们是staticpath。 问题是,Tomcat的默认servlet没有考虑到ServletPath(所以它查找主文件夹中的静态文件),而Jetty的(所以它看起来在static文件夹)。
上传图片时,文件成功保存,path设置成功。 但是在提交表单之后,上传的图像不会立即显示。 只有当我重新加载页面时,才会显示上传的图像。 我正在保存上传的文件如下: InputStream is; try { File file = new File("C:\\****\\*****\\Documents\\NetBeansProjects\\EventsCalendary\\web\\resources\\images\\uploadPhoto.png"); is = event.getFile().getInputstream(); OutputStream os = new FileOutputStream(file); setUserPhoto("\\EventsCalendary\\resources\\images\\"+file.getName()); byte buf[] = new byte[1024]; int len; while ((len = is.read(buf)) > 0) { os.write(buf, 0, len); } os.close(); is.close(); } catch (IOException ex) { System.out.println(ex.getStackTrace()); } 为什么上传的图片只在重新加载页面后才显示,我该如何解决?