我想在Eclipse中使用Servlet进行开发,但它说javax.servlet
无法解析包.如何将javax.servlet
包添加到Eclipse项目中?
我已经做了几年的Java SE并继续使用Java EE.但是我在理解Java EE的某些方面时遇到了一些麻烦.
Java EE只是一个规范吗?我的意思是:EJB Java EE?
EJB/Spring是不同的Java EE实现?
很抱歉,但是我很难理解Java EE是什么.有人能解释一下Java EE是什么吗?和EJB?
当尝试在EL中引用托管bean时#{bean.entity.property}
,有时会javax.el.PropertyNotFoundException: Target Unreachable
抛出异常,通常是在设置bean属性时,或者要调用bean操作时.
似乎有五种不同的消息:
这些都意味着什么?它们是如何引起的,它们应该如何解决?
我觉得Java EE 6规范有点乱.有几组注释.
我们有javax.ejb
类似于@Stateful
和@Stateless
创建EJB的注释.
还有一个@javax.annotation.ManagedBean
用于创建托管bean.
javax.enterprise.context
喜欢@SessionScoped
和注释中有注释@RequestScoped
.
更重要的是也有@ManagedBean
和@SessionScoped
/ @RequestScoped
在注释javax.faces.bean
包.
为了使事件更复杂,有一个javax.inject
带@Named
注释的包.
有人可以描述一下他们之间的关系吗?
我在哪里可以使用@EJB
,@Inject
或@ManagedPropery
注入其他豆类?
我知道托管bean的工作方式类似于控制器,因为您唯一的任务是将视图层与模型"链接"起来.
要使用bean作为托管bean,我必须声明@ManagedBean
注释,这样做我可以直接与bean通信JSF.
如果我想在这个managedBean中注入一些组件(来自Spring),我有两种可能的方法:
在ManagedBean中选择属性(如"BasicDAO dao")并@ManagedProperty(#{"basicDAO"})
在属性上方声明.这样做,我"basicDAO"
在ManagedBean中从Spring 注入bean .
在ManagedBean Class中声明了@Controller,然后我将拥有@ManagedBean
和@Controller
注释一起.在物业中"BasicDAO dao"
我必须使用@Autowired
Spring.
我的理解是否正确?
我需要获得一些配置并连接到某处的外部资源/对象/系统并将其存储在应用程序范围内.
我可以看到两种设置应用程序的方法:
init()
现有的servlet和所需的代码,并将所有构造的对象保留在同一个servlet中.init()
来完成工作.然后存储创建的对象ServletContext
以与其他servlet共享.以上哪种方法更好?有没有更好的方法在servlet之间共享对象?直接从彼此调用它们......?
我注意到在尝试设置在jetty上运行的JSF 2 webapp时,我有这个错误:
java.lang.IllegalStateException:应用程序在启动时未正确初始化,找不到Factory:javax.faces.context.FacesContextFactory
这可以通过添加到我的web.xml轻松解决
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
我试过寻找一个详细的解释,但是徒劳无功..
jetty-maven-plugin:8.0.3.v20111011:run + jdk 7 + eclipse indigo
这是我的maven依赖:
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Basic Setup Web Application</display-name>
<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>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
</web-app>
Run Code Online (Sandbox Code Playgroud)
这是jetty插件的输出:
[INFO] <<< jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ BasicSetup <<<
[INFO]
[INFO] --- jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ …
Run Code Online (Sandbox Code Playgroud) 当我们创建JSF页面时,客户端请求允许使用Java代码和HTML的组合动态生成HTML.我们可以使用JSF框架在HTML页面中引入钩子,允许服务器基于稍后在服务器上发生的异步事件来更新HTML页面,通常是通过不同的线程吗?
我正在尝试将基于JSF的应用程序部署到Tomcat 6.我的构建系统的设置方式,WAR本身没有任何库,因为该服务器共提供43个应用程序.而是将库复制到共享库文件夹中并在应用程序之间共享.部署时,我收到此错误
SEVERE: Error deploying configuration descriptor SSOAdmin.xml
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1078)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) …
Run Code Online (Sandbox Code Playgroud) jsf ×4
servlets ×4
java ×3
java-ee ×3
cdi ×2
managed-bean ×2
asynchronous ×1
data-sharing ×1
eclipse ×1
ejb ×1
el ×1
installation ×1
integration ×1
java-ee-6 ×1
jetty ×1
jsf-2 ×1
jsp ×1
maven ×1
push ×1
spring ×1
tomcat ×1