<input type="text" name="username" value="${user.username}"/>
改成
<input type="text" name="user.username" value="${user.username}"/>密码一样的道理。改下
改成
<input type="text" name="user.username" value="${user.username}"/>密码一样的道理。改下
解决方案 »
- ssh2整合后有什么好的办法可以判断用户是否登录
- 项目的网页需要有缓存吗
- struts2 json
- Hibernate 查询语句
- 从一个人的艰辛历程中寻找学习J2EE的捷径
- doPost和doGet方法区别
- 用HQL对数据库进行查询,出现的ERROR InsertTag:922 - ServletException in 'xxx.jsp': null错误
- 请问为什么Map.keySet().iterator()这条语句在编译时系统会指出没有发现iterator()这个方法?
- ***tomcat无法显示JSP问题***
- 那位大侠能帮个忙吗?
- POI 导出excel 时Cannot get a error value from a numeric cell
- Spring 自动注入报错
import java.sql.SQLException;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;import com.myEdition.bean.User;
import com.myEdition.dao.UserDAO;
import com.myEdition.dao.impl.UserDAOImpl;
import com.myEdition.domain.Regedit;
import com.myEdition.domain.impl.Regeditlmpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")
@Controller("RegeditAction")@Scope("prototype")
public class RegeditAction extends ActionSupport {
//定义接口Regedit
@Resource
private User user;
private Regeditlmpl RegeditImpl;
private String username;
private String password;
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;
}
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}
public void reg(String username,String password){
user.setPassword(password);
user.setUsername(username);
}
/*public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
//获取参数名称
String username = request.getParameter("username");
String password = request.getParameter("password");
user.setUsername(username);
user.setPassword(password);
session.setAttribute("user", user);
RegeditImpl.saveUser(user);
//return "regedit";
request.getRequestDispatcher("regedit.jsp").forward(request, response);
}*/
public String execute(){
//保存用户提交的信息
User user1 = RegeditImpl.find(this.getPassword(), this.getUsername());
if(user!=null){
Map session=(Map)ActionContext.getContext().getSession();
session.put("user1", user1);
RegeditImpl.saveUser(user);
//User user1 = RegeditImpl.find(user.getPassword(), user.getUsername());
return "regedit";
//返回页面
}
else
return null;
}
/*
public String regedit(){
System.out.println(user.getUsername());
User user1=new User();
user1.setId(user.getId());
user1.setPassword(user.getPassword());
user1.setUsername(user.getUsername());
regedit.saveUser(user1);
return "regedit";
}*/
public Regeditlmpl getRegeditImpl() {
return RegeditImpl;
} public void setRegeditImpl(Regeditlmpl regeditImpl) {
RegeditImpl = regeditImpl;
}
/*public static void main(String[]args){
ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");
User user2 = new User();
//user2.setId(1);
user2.setPassword("456red");
user2.setUsername("zzqweas");
UserDAO userDao = (UserDAO)context.getBean("UserDAOImpl");
userDao.insert(user2);
}*/
/*public static void main(String[]args){
System.out.println(new RegeditAction().user);
}*/
}
上面是我action代码,你看有错误没??
一种像1L所说;
第二种在action中 implements ModelDriven<User>并覆写
public User getModel() {
return this.model;
}去掉private User user;和user的set、get方法
//定义接口Regedit
@Resource放到
private Regeditlmpl RegeditImpl;上面如:
private User user;
//定义接口Regedit
@Resource
private Regeditlmpl RegeditImpl;前台按1L所说修改!
还是find方法里的某句空指针?
import java.sql.SQLException;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;import com.myEdition.bean.User;
import com.myEdition.dao.UserDAO;
import com.myEdition.dao.impl.UserDAOImpl;
import com.myEdition.domain.Regedit;
import com.myEdition.domain.impl.Regeditlmpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")
@Controller("RegeditAction")@Scope("prototype")
public class RegeditAction extends ActionSupport {
//定义接口Regedit
@Resource
private User user;
private Regeditlmpl RegeditImpl;
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
} public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}
/*public void reg(String username,String password){
user.setPassword(password);
user.setUsername(username);
}*/
/*public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
//获取参数名称
String username = request.getParameter("username");
String password = request.getParameter("password");
user.setUsername(username);
user.setPassword(password);
session.setAttribute("user", user);
RegeditImpl.saveUser(user);
//return "regedit";
request.getRequestDispatcher("regedit.jsp").forward(request, response);
}*/
public String execute(){
//保存用户提交的信息
//User user1 = RegeditImpl.find(this.getPassword(), this.getUsername());
if(user!=null){
Map session=(Map)ActionContext.getContext().getSession();
session.put("user1", user);
RegeditImpl.saveUser(user);
//User user1 = RegeditImpl.find(user.getPassword(), user.getUsername());
return "regedit";
//返回页面
}
else
return "regedit";
}
/*
public String regedit(){
System.out.println(user.getUsername());
User user1=new User();
user1.setId(user.getId());
user1.setPassword(user.getPassword());
user1.setUsername(user.getUsername());
regedit.saveUser(user1);
return "regedit";
}*/
public Regeditlmpl getRegeditImpl() {
return RegeditImpl;
} public void setRegeditImpl(Regeditlmpl regeditImpl) {
RegeditImpl = regeditImpl;
}
/*public static void main(String[]args){
ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");
User user2 = new User();
//user2.setId(1);
user2.setPassword("456red");
user2.setUsername("zzqweas");
UserDAO userDao = (UserDAO)context.getBean("UserDAOImpl");
userDao.insert(user2);
}*/
/*public static void main(String[]args){
System.out.println(new RegeditAction().user);
}*/
}
@Resource private User user;
private Regeditlmpl RegeditImpl;这个你还是没有改! 你把@Resource 放到
private Regeditlmpl RegeditImpl; 上面! 不用注入User对象,应该注入DAO或Manager层!
改成 private User user;
@Resource
private Regedit RegeditImpl; //这里最好用接口,而不用具体实现类!
//定义接口Regedit
private User user;
@Resource
private Regeditlmpl RegeditImpl;
private String username;
private String password;
这样吧?这样还是解决不了问题
】
package com.myEdition.action;import java.io.IOException;
import java.sql.SQLException;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;import com.myEdition.bean.User;
import com.myEdition.dao.UserDAO;
import com.myEdition.dao.impl.UserDAOImpl;
import com.myEdition.domain.Regedit;
import com.myEdition.domain.impl.Regeditlmpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")
@Controller("RegeditAction")@Scope("prototype")
public class RegeditAction extends ActionSupport {
//定义接口Regedit
private User user;
@Resource
private Regeditlmpl RegeditImpl;
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
} public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}
/*public void reg(String username,String password){
user.setPassword(password);
user.setUsername(username);
}*/
/*public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
//获取参数名称
String username = request.getParameter("username");
String password = request.getParameter("password");
user.setUsername(username);
user.setPassword(password);
session.setAttribute("user", user);
RegeditImpl.saveUser(user);
//return "regedit";
request.getRequestDispatcher("regedit.jsp").forward(request, response);
}*/
public String execute(){
//保存用户提交的信息
//User user1 = RegeditImpl.find(this.getPassword(), this.getUsername());
if(user!=null){
Map session=(Map)ActionContext.getContext().getSession();
session.put("user1", user);
RegeditImpl.saveUser(user);
//User user1 = RegeditImpl.find(user.getPassword(), user.getUsername());
return "regedit";
//返回页面
}
else
return "regedit";
}
/*
public String regedit(){
System.out.println(user.getUsername());
User user1=new User();
user1.setId(user.getId());
user1.setPassword(user.getPassword());
user1.setUsername(user.getUsername());
regedit.saveUser(user1);
return "regedit";
}*/
public Regeditlmpl getRegeditImpl() {
return RegeditImpl;
} public void setRegeditImpl(Regeditlmpl regeditImpl) {
RegeditImpl = regeditImpl;
}
/*public static void main(String[]args){
ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");
User user2 = new User();
//user2.setId(1);
user2.setPassword("456red");
user2.setUsername("zzqweas");
UserDAO userDao = (UserDAO)context.getBean("UserDAOImpl");
userDao.insert(user2);
}*/
/*public static void main(String[]args){
System.out.println(new RegeditAction().user);
}*/
}【service】package com.myEdition.domain.impl;import javax.annotation.Resource;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.myEdition.bean.User;
import com.myEdition.dao.UserDAO;
import com.myEdition.dao.impl.UserDAOImpl;
import com.myEdition.domain.Regedit;@Transactional
@Service
public class Regeditlmpl implements Regedit{
private String msg;
@Resource
private UserDAOImpl UserDAOImpl;
public UserDAOImpl getUserDAOImpl() {
return UserDAOImpl;
}
public void setUserDAOImpl(UserDAOImpl userDAOImpl) {
UserDAOImpl = userDAOImpl;
}
public void setMsg(String msg) {
this.msg = msg;
}
//删除用户
public void deleteUser(User user) {
UserDAOImpl.delete(user);
}
//获取是否保存成功信息
public String getMsg() {
return msg;
}
//保存用户
public void saveUser(User user) {
UserDAOImpl.insert(user);
msg="注册成功!";
}
//修改用户
public void updateUser(User user) {
UserDAOImpl.update(user);
}
//查询用户
public User find(String username,String password){
return UserDAOImpl.find(username, password);
}
public void insert(User user) {
// TODO Auto-generated method stub
}
}【DAO】package com.myEdition.dao.impl;
import java.util.List;
import javax.annotation.Resource;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.resource.AppContext;
import com.myEdition.bean.User;
import com.myEdition.dao.UserDAO;
@Repositorypublic class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
//@Resource
//private SessionFactory sessionFactory;
/*private Session getSession(){
return sessionFactory.getCurrentSession();
}*/
/*public Session getSession(){
return sessionFactory.getCurrentSession();
}
private static UserDAO UserDAO;
public UserDAOImpl() {
super();
}
public static UserDAO getInstance(){
if(UserDAO==null){
UserDAO=(UserDAO)AppContext.getInstance().getAppContext().getBean("UserDAO");
}
return UserDAO;
}*/
/*public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory=sessionFactory;
}*/
//Session session=sessionFactory.openSession();
private String hql="from User u where u.username = ?";
//删除用户
public void delete(User user) {
getHibernateTemplate().delete(user);
}
//新增用户
public void insert(User user) {
getHibernateTemplate().save(user);
}
//查询用户
public User find(String username,String password) {
/*User user = null;
List users = getSession().createQuery(hql).setParameter(0, name).list();
if(users.size()!=0){
user=(User)users.get(0);
}*/
String str[]={username,password};
List list = getHibernateTemplate().find("from user where username=? and password=?",str);
if(list.size()>0)
return (User)list.get(0);
else return null;
//return user;
}
//修改用户
public void update(User user) {
getHibernateTemplate().update(user);
}
public List query(String name) {
// TODO Auto-generated method stub
return null;
}
//注入sevice
}
再不行你把@Resource 改成@Autowired 试试!
public class RegeditAction extends ActionSupport {
//定义接口Regedit
private User user;
@Autowired
private Regedit Regedit;
已改过,无济于事
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-p-3.0.xsd
">
<!-- 启用自动扫描
<context:component-scan base-package="com.myEdition"></context:component-scan> -->
<!-- 事务管理 -->
<!-- 以下的被注释
<tx:annotation-driven transaction-manager="transactionManger"/>
<bean id="transactionManger" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
-->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/myedition">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/myEdition/bean/Content.hbm.xml</value>
<value>com/myEdition/bean/ContentType.hbm.xml</value>
<value>com/myEdition/bean/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean><!-- 配置事务拦截器 -->
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!--事务拦截器BEAN需要依赖注入一个事物管理器 -->
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<!-- 定义事物传播属性 -->
<props>
<prop key="delete*"> PROPAGATION_REQUIRED</prop>
<prop key="insert*"> PROPAGATION_REQUIRED</prop>
<prop key="update*"> PROPAGATION_REQUIRED</prop>
<prop key="save*"> PROPAGATION_REQUIRED</prop>
<prop key="find*"> PROPAGATION_REQUIRED</prop>
<prop key="get*"> PROPAGATION_REQUIRED</prop>
<prop key="*"> PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean><!-- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性这个bean后处理器,根据事务拦截器为目标bean自动创建事务代理--><bean id="userDAOProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定哪些bean自动生成业务代理 --><property name="beanNames">
<!-- 下面是所有需要自动创建事务代理的bean-->
<list>
<value>RegeditImpl</value>
<value></value>
<value></value>
</list>
</property>
<!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value></list>
</property>
</bean> <!--spring beanName dao层的beanName -->
<bean id="UserDAOImpl" class="com.myEdition.dao.impl.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <bean id="ContentTypeDAOImpl" class="com.myEdition.dao.impl.ContentTypeDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="ContentDAOImpl" class="com.myEdition.dao.impl.ContentDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- spring容器管理业务逻辑层service -->
<bean id="RegeditImpl" class="com.myEdition.domain.impl.Regeditlmpl">
<property name="UserDAOImpl" ref="UserDAOImpl"></property>
</bean>
<bean id="SetContentTypeImpl" class="com.myEdition.domain.impl.SetContentTypeImpl">
<property name="ContentTypeDAOImpl" ref="ContentTypeDAOImpl"></property>
</bean>
<bean id="EditImpl" class="com.myEdition.domain.impl.EditImpl">
<property name="ContentDAOImpl" ref="ContentDAOImpl"></property>
</bean>
<!-- spring容器管理action
<bean id="RegeditAction" class="com.myEdition.action.RegeditAction">
<property name="RegeditImpl" ref="RegeditImpl"></property>
</bean>
<bean id="ContentTypeAction" class="com.myEdition.action.ContentTypeDAOImpl">
<property name="SetContentTypeImpl" ref="SetContentTypeImpl"></property>
</bean>
-->
</beans>
如果注解把
<context:component-scan base-package="com.myEdition"></context:component-scan>
不要注释!
把下面的那些
<bean id="UserDAOImpl" class="com.myEdition.dao.impl.UserDAOImpl">
这些类全部给注释掉!!!!在Regeditimpl中的saveUser()方法中加一个断点,看能进去不!
http://lvqionghua.blog.163.com/blog/static/185277420116113816675/