javaweb中使用JSF

本文介绍了使用myEclipse创建JSF项目的过程,并详细展示了web.xml及faces-config.xml的配置方法。通过具体示例,包括UserBean类及其属性管理、导航规则等,深入解析了JSF应用程序的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.myEclipse 中新建一个项目后,右键新建---myEclipse--add JSF capabilities..
2.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  
  <listener> 
	<listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
 </listener> 
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


3.faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>userBean</managed-bean-name>
  <managed-bean-class>cn.edu.jsf.UserBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  
  <managed-property>
   <property-name>name</property-name>
   <property-class>java.lang.String</property-class>
   <value/>
  </managed-property>
  
  <managed-property>
   <property-name>friend</property-name>
   <property-class>cn.edu.jsf.Friend</property-class>
  <null-value/>
  </managed-property>
  
  <managed-property>
   <property-name>converter</property-name>
   <property-class>javax.faces.convert.Converter</property-class>
  <null-value/>
  </managed-property>
 </managed-bean>
 
 <navigation-rule>
  <from-view-id>/add.jsp</from-view-id>
  <navigation-case>
   <from-outcome>success</from-outcome>
   <to-view-id>/show.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 
 <navigation-rule>
  <from-view-id>/show.jsp</from-view-id>
 </navigation-rule>
</faces-config>


4.UserBean.java

/**
 * 
 */
package cn.edu.jsf;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import com.sun.xml.internal.fastinfoset.stax.events.Util;

/**
 * @author Administrator
 *
 */
public class UserBean {
	private java.lang.String name;
	private Friend friend;
	private Converter converter;

	public UserBean() {
	}

	public java.lang.String getName() {
		return name;
	}

	public void setName(java.lang.String name) {
		this.name = name;
	}

	public cn.edu.jsf.Friend getFriend() {
		return friend;
	}

	public void setFriend(cn.edu.jsf.Friend friend) {
		this.friend = friend;
	}

	
	public javax.faces.convert.Converter getConverter() {
		return new Converter(){

			//字符类型转换为 目标类型
			public Object getAsObject(FacesContext context,
					UIComponent component, String value) {
				if(!Util.isEmptyString(value)){
					String [] values=value.split(":");
					Friend friend=new Friend(values[0], Double.parseDouble(values[1]), Integer.parseInt(values[2]));
					return friend;
				}
				return null;
			}

			//目标类型转换为 字符类型
			public String getAsString(FacesContext context,
					UIComponent component, Object value) {
				// TODO Auto-generated method stub
				Friend friend=(Friend)value;
				if(friend!=null){
					return new StringBuilder("Friend[name=").append(friend.getName())
					.append(",height=").append(friend.getHeight()).append(",age=").append(friend.getAge()).toString();
				}else{
					return null;
				}
				
			}
			
		};
	}

	public void setConverter(Converter converter) {
		this.converter = converter;
	}
	public String add(){
		return "success";
	}
}



5.friend.java

package cn.edu.jsf;

public class Friend {
	private String name;
	private Double height;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Double getHeight() {
		return height;
	}
	public void setHeight(Double height) {
		this.height = height;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Friend() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Friend(String name, Double height, int age) {
		super();
		this.name = name;
		this.height = height;
		this.age = age;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return new StringBuffer(this.name).append(":").append(this.height).append(":").append(this.age).toString();
	}
	
	
}


6.访问
localhost:8080/web_JSF/add.faces
### 如何在 Java Web 项目中集成和使用第三方组件或插件 #### 集成第三方库的重要性 通过合理地组合和使用框架、工具包、插件和第三方库,可以高效地开发出功能丰富、性能优良的Web应用程序[^1]。 #### Maven依赖管理 大多数现代Java Web项目的构建都基于Maven或Gradle这样的自动化构建工具。为了引入第三方库,在`pom.xml`文件中添加相应的依赖项是最常见的做法之一: ```xml <dependency> <groupId>com.example</groupId> <artifactId>example-library</artifactId> <version>1.0.0</version> </dependency> ``` #### 使用Servlet监听器初始化资源 对于某些需要特定生命周期管理的组件(如CEF3),可以在应用启动时利用Servlet监听器来完成必要的初始化工作。例如,如果要集成类似于CEF3这种复杂的嵌入式浏览器引擎,则可能涉及到创建并配置客户端处理程序等操作[^2]: ```java public class CefInitializer implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { // 初始化CefClient实例及其回调处理器 CefApp app = CefApp.getInstance(); CefClient client = app.createClient(new MyCefClientHandler()); // 设置其他参数... } private static final class MyCefClientHandler extends CefClientAdapter { @Override protected LifeSpanHandler getLifeSpanHandler() { return new MyLifeSpanHandler(); } private static final class MyLifeSpanHandler extends LifeSpanHandler { @Override public boolean doClose(CefBrowser browser) { // 实现关闭逻辑 return super.doClose(browser); } @Override public void onAfterCreated(CefBrowser browser) { // 浏览器创建后的处理 System.out.println("New Browser Created"); } @Override public void onBeforeClose(CefBrowser browser){ // 关闭前的操作 System.out.println("About to close a browser instance."); } } } } ``` 请注意上述代码片段仅作为概念验证,并未完全实现CEF3的具体细节。实际应用场景下还需要考虑更多因素,比如线程安全性和跨平台兼容性等问题。 #### JSP/JSF页面中的JavaScript交互 许多前端UI控件通常是以JavaScript的形式提供给开发者使用的。因此,在JSP或者JSF页面里可以通过<script>标签加载这些脚本文件并与之互动: ```html <!-- 引入外部js --> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <!-- 自定义js --> <script type="text/javascript"> $(document).ready(function(){ $('#myButton').click(function(){ alert('Hello, world!'); }); }); </script> ``` 以上方法适用于各种类型的轻量级UI增强型插件,但对于更复杂的应用场景则建议采用前后端分离架构配合RESTful API的方式进行数据交换和服务调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值