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

关于spring两个很棘手的有关问题,高手帮帮小弟我把,呜呜

2011-12-30 
关于spring两个很棘手的问题,高手帮帮我把,呜呜两个关于spring的棘手问题:第一个问题:我做项目的时候没有

关于spring两个很棘手的问题,高手帮帮我把,呜呜
两个关于spring的棘手问题:
第一个问题:我做项目的时候没有使用spring,使用的是struts跟hibernate,现在老师让加上spring。当我点击修改数据

按钮的时候,填写好了修改的数据之后,提交到了action中:
/**
* 更新用户信息的方法
* @return
*/
public String updateSuccess(){
users.setWorkid(users.getWorkid());
users.setUsername(users.getUsername());
users.setAge(users.getAge());
  users.setGender(users.getGender());
  users.setPhone(users.getPhone());
  users.setAddress(users.getAddress());
  System.out.println(users.getAddress());
  users=usersServiceIn.updateUsers(users);
  if(users!=null){
  return "update";
  }
  else{
  return ERROR;  
  }
   

}
返回的字符串是update,然后类型是chain,然后提交到了
/**
* 处理用户登录成功的方法
* @return
*/
public String loginSuccess() {
//将传过来的对象放入到u中
users.setWorkid(users.getWorkid());
users.setPassword(users.getPassword());
System.out.println(users.getWorkid());
System.out.println(users.getPassword());
//布尔类型的变量接收参数
boolean flag = usersServiceIn.isLogin(users);
System.out.println(flag);
if(flag){
//调用显示个人信息的方法
showUsersByWorkId();
//拿出用户的权限
//String typemsg=usersServiceIn.getTypeMsg(users.getWorkid());
//使用map获得session
ActionContext context = ActionContext.getContext();
Map session = context.getSession();
  session.put("users", users);
// session.put("typemsg", typemsg);
//登陆成功
return SUCCESS;
}else {
//添加错误的信息
addFieldError("loginError", "用户名或者密码错误!");
//返回错误的字符串
return ERROR;
}

}

/**
* 根据工号显示用户信息的方法
* @return
*/
public String showUsersByWorkId(){
//创建业务逻辑的对象
List<Users> oneUser = usersServiceIn.getUsersByWorkId(users.getWorkid());
//将list放入到session中
ActionContext context = ActionContext.getContext();
Map session = context.getSession();
session.put("oneUser", oneUser);
return SUCCESS;
}
显示出了页面。。
但是使用了spring之后,提交数据之后,重新chain到loginSuccess()居然返回了error,拿不到用户名和密码了。
怎么办啊?直接返回了error。
struts配置:
<package name="users" extends="struts-default">  
  <action name="Users_loginSuccess" class="Users_loginSuccess" method="loginSuccess"> 
  <result>/users/Users_loginSuccess.jsp</result>
  <result name="error">/login.jsp</result>
  </action>  
   
  <action name="Users_updateSuccess" class="Users_updateSuccess" method="updateSuccess"> 
  <result name="update" type="chain">Users_loginSuccess</result>
  </action>  
</package>

spring的配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/shallow"></property>
<property name="username" value="root"></property>
<property name="password" value="tiger"></property>
  </bean>
   
  <bean id="sessionFactory" 

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">


<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.baidu.model.Users</value>
</list>
</property>
  </bean>

  <!-- 点击登陆按钮的 -->
  <bean id="usersDao" class="com.baidu.dao.UsersDaoImpl">
  <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
  <bean id="usersServiceIn" class="com.baidu.service.UsersServiceImpl">
<property name="usersDao" ref="usersDao"></property>
  </bean>
  <bean id="Users_loginSuccess" class="com.baidu.action.UsersAction" scope="prototype">
<property name="usersServiceIn" ref="usersServiceIn"></property>
  </bean>
  
  <!-- 点击个人信息保存数据的 -->
  <bean id="Users_updateSuccess" class="com.baidu.action.UsersAction" scope="prototype">
<property name="usersServiceIn" ref="usersServiceIn"></property>
  </bean>


2.第二个问题,使用了spring之后 很荣幸的从jsp页面提交到action变成了乱码?呜呜,我的编码都是utf-8的

[解决办法]
楼主帮不了你 只好帮你顶起了 加油 祝你好运
[解决办法]
第一个问题说的太难懂了,
第二个问题,你用post提交,配置一下struts2的字符集,在action的配置文件中加入
<constant name="struts.i18n.encoding" value="GBK"/>
或者用spring的过滤器来处理,在web.xml中添加如下配置
 <filter>
 <filter-name>characterEncodingFilter</filter-name>
 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <init-param>
 <param-name>encoding</param-name>
 <param-value>UTF-8</param-value>
 </init-param>
 </filter>
 
 <filter-mapping>
 <filter-name>characterEncodingFilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
[解决办法]
<constant name="struts.i18n.encoding" value="UTF-8"/>
[解决办法]
<constant name="struts.i18n.encoding" value="UTF-8"/>
[解决办法]
楼主没有说明白啊

[解决办法]
//布尔类型的变量接收参数
boolean flag = usersServiceIn.isLogin(users);

第一个问题,貌似你关键代码没给贴上来呀。应该自己调一下,问题能在具体点。
[解决办法]
你这样说就是没走if(flag)这条语句,输出看看flag是不是true,不是的话错误应该就在userServiceIn.isLogin(users)里

热点排行