jsf+spring实现完全依托spring的注入方式

完全脱离managed-beans 管理bean.让spring管理bean的依赖。

其实JSF也是采用set方式提供对bean的依赖注入,但是并不完全和spring相同。因为Spring可以给我们提供更简单的注入方式,并且也提供了更多的功能,如安全验证和事物管理等等。

下面演示一下怎么实现让Spring完全的管理Bean

定义一个pojo Person.java

package pojo;

public class Person {
private String name;
private int age;
private IAction action;

public IAction getAction() {
   return action;
}

public void setAction(IAction action) {
   this.action = action;
}

public String getName() {
   return name;
}

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

public int getAge() {
   return age;
}

public void setAge(int age) {
   this.age = age;
}
public void isExecute(){
   action.doSomething();
   System.out.println("哈哈"+this.getName());
}

}

action接口 IAction.java

public interface IAction {
    public void doSomething();
}

action接口实现类 ActionImpl

package pojo;

public class ActionImpl implements IAction {

@Override
public void doSomething() {
System.out.println("正在打架");
}

}
到此Java的业务逻辑部分完成,下面是配置文件。

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>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<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>
<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

注意:两个监听类都需要引入spring.web包

faces.xml

<?xml version='1.0' encoding='UTF-8'?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
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"
version="1.2">

<application>
   <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
</application>
</faces-config>

很简单就一句话

Spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="action" class="pojo.ActionImpl"></bean>
    <bean id="bean" class="pojo.Person" scope="request"> bean的存在范围
     <property name="action" ref="action"></property>
    </bean>

</beans>

最后页面 index.faces

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSF 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<f:view>
   <h:form>
     <h:outputLabel>your name?</h:outputLabel>
     <h:inputText value="#{bean.name}"></h:inputText></p>
      <h:outputLabel>your age?</h:outputLabel>
     <h:inputText value="#{bean.age}"></h:inputText>
     <h:commandButton value="reg it" action="#{bean.isExecute}"></h:commandButton>
   </h:form>
</f:view>
</body>
</html>

试试看。证明一下强大的spring.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值