spring 依赖注入的问题
spring不能自动实例化bean Spring Bean 实例 --------------------编程问答--------------------<!-- 配置DAO组件 -->applicationContent.xml配置如上
<bean id="userDao" class="com.blog.dao.UserDaoImpl" />
<!-- 配置业务逻辑组件 -->
<bean id="userService" class="com.blog.service.UserServiceImpl">
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>
<!-- 配置RegisterAction -->
<bean id="register" class="com.blog.action.Register" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
<!-- 配置LoginAction -->
<bean id="login" class="com.blog.action.Login" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
运行报错 --------------------编程问答-------------------- 那你 struts 配置文件怎么写的啊?是不是login ?
--------------------编程问答--------------------
<action name="login" class="com.blog.action.Login">--------------------编程问答-------------------- 把你的报错类发上来,带着行号,下次出问题记得贴全点 --------------------编程问答--------------------
<result name="input">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
<action name="register" class="com.blog.action.Register">
<result name="input">/register.jsp</result>
<result name="success">/success.jsp</result>
<result name="error">/register_error.jsp</result>
</action>
public class Login extends ActionSupport{--------------------编程问答--------------------
private UserService userService;
private String username;
private String password;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() throws Exception {
User user = new User();
user.setUsername(username);
user.setPassword(password);
//没有new一个对象时,报Exception occurred during processing request: null
//userService = new UserServiceImpl();
HttpServletRequest request = ServletActionContext.getRequest();
//System.out.println(user.getUsername());
if(userService.loginUser(user)){
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
request.setAttribute("info", username+"登录成功!");
System.out.println("hello!");
return SUCCESS;
}
else
return INPUT;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
你这是不是改源码了?,
43行?重新运行后的错误行是哪个? --------------------编程问答-------------------- 你struts的action 没交给spring管理? --------------------编程问答--------------------
把你的报错类发上来,带着行号,下次出问题记得贴全点public class Login extends ActionSupport{
private UserService userService;
private String username;
private String password;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() throws Exception {
User user = new User();
user.setUsername(username);
user.setPassword(password);
//没有new一个对象时,报Exception occurred during processing request: null
//userService = new UserServiceImpl();
HttpServletRequest request = ServletActionContext.getRequest();
//System.out.println(user.getUsername());
if(userService.loginUser(user)){
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
request.setAttribute("info", username+"登录成功!");
System.out.println("hello!");
return SUCCESS;
}
else
return INPUT;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
你这是不是改源码了?,
43行?重新运行后的错误行是哪个?
<bean id="login" class="com.blog.action.Login" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>中的id值"login". --------------------编程问答-------------------- dao没有创建可能是由于你的sessionFactory没有创建好,你把后台的异常信息看全吧。或贴上来。 --------------------编程问答-------------------- 9搂的回复应该是对的,你在action想通过spring注入使用userService,那么你在struts.xml中配置action的实现类的时候就应该使用spring自动生成的实例化类,而不是内部自己创建的实例。把struts.xml中的class的值改成login试试 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 非常感谢上面各位的回答,问题找到了,缺少一个包 --------------------编程问答-------------------- 这个原因一般人还真的是找不到啊!!.. --------------------编程问答--------------------
如果你想将action交由spring管理,那么struts.xml的<action>中的class属性值不能再是Action的全限定类名,而是
<bean id="login" class="com.blog.action.Login" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>中的id值"login".
<!-- 配置LoginAction -->
<bean id="login" class="com.blog.action.Login" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
解决办法:改为<action name="login" class="login">应该就可以了! --------------------编程问答-------------------- 除
补充:Java , Java EE