mysql数据库表已经字段:
项目文件结构:
调试过程中要注意的事项:
①:applicationContext.xml文件要放在src目录下
②:容易出错的地方如下代码中字体为红色处
常见错误请参看:http://blog.163.com/jxguo_05/blog/static/71940100201023185653156/ & http://blog.sina.com.cn/s/blog_6757442e0100xumy.html &
http://blog.csdn.net/yabushandaxue/article/details/39473593
各工具版本:struts2.3.4 、hibernate 3.6.0 spring3.1.3
jar包:如下:下载地址:http://download.csdn.net/detail/sxf1997/7976797
这里是一个简单的利用ssh整合的页面登陆界面
代码如下:
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <span style="color:#ff0000;"><package name="Action" namespace="/" extends="struts-default"></span> <!-- 登录 --> <action name="login" class="Action.LoginServiceAction"> <result name="success">/success.jsp</result> <result name="error">/login.jsp</result> </action> </package> </struts>
login.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Insert title here</title> </head> <body> <h1>欢迎登录</h1> <span style="color:#ff0000;"><s:form action="login.action" method="post" namespace="/"></span> <s:textfield name="username" label="账号"></s:textfield> <s:password name="password" label="密码"></s:password> <s:submit value="登陆"></s:submit> </s:form> </body> </html>
success.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Insert title here</title> </head> <body> <h1>欢迎你,<s:property value="username"/>登陆成功!</h1> </body> </html>
登陆页面处理的action
package Action; import java.util.List; import org.springframework.context.support.ClassPathXmlApplicationContext; import DAO.UserDao; import PO.User; import com.opensymphony.xwork2.ActionSupport; public class LoginServiceAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; /** * */ private String username; private String password; <span style="color:#ff0000;">ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");</span> UserDao userDao=(UserDao) ctx.getBean("userDao"); /** * @return the username */ public String getUsername() { return username; } /** * @param username the username to set */ public void setUsername(String username) { this.username = username; } /** * @return the password */ public String getPassword() { return password; } /** * @param password the password to set */ public void setPassword(String password) { this.password = password; } /* (non-Javadoc) * @see com.opensymphony.xwork2.ActionSupport#execute() */ @Override public String execute() throws Exception { // TODO Auto-generated method stub //查找账号相符的用户 List<User>userlist=userDao.findByName(username); //使用简化的for语句对集合进行遍历并比较用户的密码 for(User user : userlist){ if(user.getPassword().equals(password)){ return SUCCESS; }else { return ERROR; } } return ERROR; } }
处理方法的接口 ( DAO包)
package DAO; import java.util.List; import PO.User; public interface UserDao { /** * 加载User实例 * @参数id知道需要加载的User实例的主键值 * @return 返回加载的User实例 * */ User get(Integer id); /** * 保存User实例 * @参数user知道需要保存的User实例 * @return 返回刚刚保存的User实例的标识属性值 * */ Integer save(User user); /** * 根据用户名查找User * @参数那么知道查询的用户名 * @return返回用户名对呀的全部User * */ List<User>findByName(String name); }
实现接口的类ImplDao.UserImpl
package ImplDao; import java.util.List; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateTemplate; import DAO.UserDao; import PO.User; public class UserDaoImpl implements UserDao { //实例化一个HibernateTemplate对象,用于执行持久化操作 private HibernateTemplate ht=null; //Hibernate持久化操作所需SessionFactory private SessionFactory sessionFactory=null; //用户依赖注入的setter方法 public void setSessionFactory(SessionFactory sessionFactory){ this.sessionFactory=sessionFactory; } //初始化HibernateTemplate方法 private HibernateTemplate gethiHibernateTemplate(){ if(ht==null){ ht=new HibernateTemplate(sessionFactory); } return ht; } @Override public User get(Integer id) { // TODO Auto-generated method stub //获取对应表中id为某个值的数据,id为主键索引 return gethiHibernateTemplate().get(User.class, id); } @Override public Integer save(User user) { // TODO Auto-generated method stub return (Integer)gethiHibernateTemplate().save(user); } @SuppressWarnings("unchecked") @Override public List<User> findByName(String name) { // TODO Auto-generated method stub return (List<User>)gethiHibernateTemplate().find("from User u where u.name=?",name); } }
PO(hibernate映射数据表的字段)
package PO; import java.io.Serializable; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 6810795086071173792L; private Integer intId; private String name; private String password; public User(){} public User(Integer intId,String name,String password){ this.intId=intId; this.name=name; this.password=password; } /** * @return the intId */ public Integer getIntId() { return intId; } /** * @param intId the intId to set */ public void setIntId(Integer intId) { this.intId = intId; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the password */ public String getPassword() { return password; } /** * @param password the password to set */ public void setPassword(String password) { this.password = password; } }
User.hbm.xml(PO对象的映射文件)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="PO.User" table="t_use_info" catalog="test"> <id name="intId" type="integer"> <column name="int_id"/> <generator class="increment"/> </id> <property name="name" type="string"> <column name="name" length="32" not-null="true"/> </property> <property name="password" type="string"> <column name="password" length="32" not-null="true"/> </property> </class> </hibernate-mapping>
hibernate和spring3的配置(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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- default-autowire="byName" --> <!-- 定义数据库数据源 --> <bean id="abcd" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost/test</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>test</value> </property> </bean> <!-- 定义会话工厂 ,并注入数据源实例dataSource --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="abcd"/> </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="mappingResources"> <list> <value>PO/User.hbm.xml</value> </list> </property> </bean> <!-- HibernateTemplate类是简化Hibernate数据访问代码的辅助类,可以获取一个session对象 --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> <property name="allowCreate"> <value>true</value> </property> </bean> <!-- 依赖注入 --> <bean id="userDao" class="ImplDao.UserDaoImpl"> <!-- 注入持久化操作所需的sessionfactory --> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>
登陆效果:
时间: 2024-11-10 14:18:25