首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Spring3流入始终为空

2012-12-16 
Spring3注入始终为空小弟刚接触Spring,写了一个简单的值注入(setter),不管怎么调注入都是NULL,请各位大大

Spring3注入始终为空
小弟刚接触Spring,写了一个简单的值注入(setter),不管怎么调注入都是NULL,请各位大大指点。感激不尽。
applicationContext.xml 代码如下
<?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-3.0.xsd">

<bean id="car" class="joe.test2.Car"></bean>
<bean id="testStr" class="joe.test2.abc">
<property name="testStr" value="123"></property>
</bean>
</beans>
web.xml 代码如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
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-app_3_0.xsd">
  <display-name></display-name>
  <listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
   </listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

abc.java 
package joe.test2;

public  class abc {
public String testStr;

public String getTestStr() {
return testStr;
}

public void setTestStr(String testStr) {
this.testStr = testStr;
}
}

inde.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="joe.test2.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
abc a = new abc();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP '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>
    <%= a.getTestStr() %><br>
  </body>
</html>

a.getTestStr()怎么调都是NULL,实在不知道为什么了,请大侠指点。
[最优解释]
楼主,首先建议你在网上找一些spring的注入的demo看一看,了解一下spring是如何实现注入来实现对象的实例化的,从上面你写的例子程序来看,你对spring了解的实在是太少了,在这儿给你说spring的注入,不太好讲。。。。


在你的jsp页面中,你调用了这么一句代码“abc a = new abc();”,你既然想通过spring来注入,这里再调用new关键字来自己创建一个对象,这不是前后矛盾么
第二,在spring的配置文件中,你虽然将类abc配置进去了,但是spring它怎么知道注入到哪儿去,spring它没有这么聪明,我做过spring整合struts2,整合dwr,整合hibernate,整合jpbm等,但是我还做过整合jsp+servlet,可能有解决方案,感兴趣楼主可以自己在网上找一下,假如说能注入,但是jsp中对于变量a的setter方法在哪儿呢……,对于自定义的java类,平常情况下,我们是根据配置的bean的id属性的名字来注入的,当然还有其它的注入方式。。。。



所以建议楼主先找一些spring的demo看看,用java项目做测试,不要上来就用javaweb项目作,因为这还要进行一些其它的配置才可以,不利于对spring中的IOC的学习

希望对楼主有所帮助!!
[其他解释]
你去new abc肯定没有啊!  你要通过spring的上下文去获取这个spring创建的bean实例!
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac2.getBean("beanId");
方法有很多!

你可以找找,不过这样没什么意义
[其他解释]

引用:
你去new abc肯定没有啊!  你要通过spring的上下文去获取这个spring创建的bean实例!
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac2.getBean("beanId");
方法有很多!

你……

多谢多谢,那通向怎么写有意义呢。
[其他解释]
我想你这样写只是为了明白他的作用!不过没关系了解了解也可以!

你可以找找一些关于spring的视频  看看的的注入是怎样的  先了解下大概,然后在来研究细节!
[其他解释]
你只是配置了,根本就没有用spring实例化

热点排行