伟殿天下 发表于 2017-7-30 17:35

〖技术分享〗基于JavaEE架构SSH框架的web项目实现

本帖最后由 伟殿天下 于 2017-7-31 08:10 编辑

如题: 制作一个基于SSH的web项目,要求实现用户注册、用户登录和用户发表帖子和回复帖子的功能。
具体要求如下:
1.实现用户的注册,注册信息包括用户名、密码、生日、手机号、年龄、电子邮箱,并对输入的注册信息进行检验。
2.实现用户的登录,并对用户名和密码进行检验。
3.实现帖子的发表,除对标题和内容的检验外,还要求对帖子内容进行拦截过滤。
4.实现帖子的回复,要求对回复内容进行检验和拦截。
5.实现的查看所有帖子列表和查看帖子内容功能。
下面细述该项目的具体实现过程:

平台:基于window操作系统、myeclipse、MySQL 5.5、DW6、Goolge浏览器
新建一个action包,包内新建一个LoginAction.java类
package com.SSH.action;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.SSH.dao.impl.UserDAO;
import com.SSH.vo.User;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
      //private String username;
      //private String password;
      private User user;                        //建立一个User类的对象
      
      public String execute()                        //处理用户请求的默认方法
      {
                //本来这里要创建Hibernate一些类的对象,比如Session对象、UserDAO对象
                //但有了Spring后,这些对象的创建都放在applicationContext.xml文件中配置
                //然后读取配置文件,从Spring容器中直接取出对象
               
                //读取配置文件,根据该文件创建对象
                ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
                UserDAO userDAO=(UserDAO)context.getBean("userDAO");      //取出名为userDAO的对象
                User u2 = userDAO.validateUser(this.user.getUsername(), this.user.getPassword());      //判断登录
                if(u2!=null)
                        return "success";
                else
                        return "error";
      }

      public User getUser() {
                return user;
      }

      public void setUser(User user) {
                this.user = user;
      }
}



新建DLAction.java类package com.SSH.action;

import com.opensymphony.xwork2.ActionSupport;

public class DLAction extends ActionSupport {
      public String execute()
      {
                return "error";
      }
}

新建dao包,包内新建impl类包,新建UserDAO.java类package com.SSH.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.SSH.dao.BaseDAO;
import com.SSH.dao.IUserDAO;
import com.SSH.vo.User;

public class UserDAO extends BaseDAO implements IUserDAO {
      //登录判断
      @Override
      public User validateUser(String username, String password) {
                User user = null;
                //String hql = "from User as u where u.username=" + username + " and u.password=" + password;      //HQL语句
                String hql = "from User as u where u.username=? and u.password=?";      //HQL语句
                Session session = this.getSession();      //调用继承的方法,获取Session对象
                Query query = session.createQuery(hql);      //Query接口对象,它能够执行复杂的HQL语句
                query.setString(0, username);                        //给第0个?处赋值
                query.setString(1, password);
                List<User> list = query.list();                        //执行查询,返回List集合对象
                if(list.size()>0)                                                //查询出来有结果
                {
                        user = list.get(0);                                        //取出第0个元素,是个User
                }
                session.close();
                return user;
      }

      @Override
      public void addUser(User user) {
                // TODO Auto-generated method stub
                Session session = this.getSession();                              //调用继承方法,获取Session对象
                Transaction tr = session.beginTransaction();                //开户事务
                session.save(user);                                                                        //保存,即添加数据
                tr.commit();                                                                              //提交事务
                session.close();
      }

      @Override
      public void delUser(User user) {
                // TODO Auto-generated method stub

      }

      @Override
      public void delUser(int id) {
                // TODO Auto-generated method stub

      }

}

新建BaseDAO.java类//该类提供数据访问的SessionFactory对象、Session对象
//任何一个要对数据进行操作的类,都必须继承BaseDAO
package com.SSH.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class BaseDAO {
      //一般sessionFactory对象都是基于数据库连接配置而创建的
      //但这里的这个成员变量没有指明是基于哪个数据库连接的
      private SessionFactory sessionFactory;

      //提供返回Session对象的方法
      public Session getSession()
      {
                return this.sessionFactory.openSession();
      }
      
      public SessionFactory getSessionFactory() {
                return sessionFactory;
      }

      public void setSessionFactory(SessionFactory sessionFactory) {
                this.sessionFactory = sessionFactory;
      }
      
}

新建IUserDAO.java类//将操作User类的所有方法,都列出来
package com.SSH.dao;

import com.SSH.vo.User;

public interface IUserDAO {
      //判断登录,带入用户名和密码,返回User对象
      public User validateUser(String username, String password);
      
      //添加用户,带入User对象
      public void addUser(User user);

      //删除用户,带入User对象
      public void delUser(User user);
      
      //删除用户,带入用户编号
      public void delUser(int id);

}

新建vo包,包内新建User.java类package com.SSH.vo;

/**
* User entity. @AuThor MyEclipse Persistence Tools
*/
public class User extends AbstractUser implements java.io.Serializable {

      // Constructors

      /** default constructor */
      public User() {
      }

      /** full constructor */
      public User(String username, String password) {
                super(username, password);
      }

}

新建User.hbm.xml并配置<?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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.SSH.vo.User" table="user" catalog="test1">
      <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
      </id>
      <property name="username" type="java.lang.String">
            <column name="username" length="10" not-null="true" />
      </property>
      <property name="password" type="java.lang.String">
            <column name="password" length="10" not-null="true" />
      </property>
    </class>
</hibernate-mapping>

新建AbstractUser.java类package com.SSH.vo;

/**
* AbstractUser entity provides the base persistence definition of the User
* entity. @author MyEclipse Persistence Tools
*/

public abstract class AbstractUser implements java.io.Serializable {

      // Fields

      private Integer id;
      private String username;
      private String password;

      // Constructors

      /** default constructor */
      public AbstractUser() {
      }

      /** full constructor */
      public AbstractUser(String username, String password) {
                this.username = username;
                this.password = password;
      }

      // Property accessors

      public Integer getId() {
                return this.id;
      }

      public void setId(Integer id) {
                this.id = id;
      }

      public String getUsername() {
                return this.username;
      }

      public void setUsername(String username) {
                this.username = username;
      }

      public String getPassword() {
                return this.password;
      }

      public void setPassword(String password) {
                this.password = password;
      }

}

新建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">

      <!-- 创建一个名为dataSource的对象,并给成员变量dirverClassName、url、username赋值 -->
      <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/test1?useUnicode=true&characterEncoding=UTF-8">
                </property>
                <property name="username" value="root"></property>
      </bean>
      
      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource">      <!-- sessionFactory对象有个成员变量叫dataSource -->
                        <ref bean="dataSource" />      <!-- 将上面创建的dataSource对象,赋值给成员变量dataSource -->
                </property>
                <property name="hibernateProperties">
                        <props>
                              <prop key="hibernate.dialect">
                                        org.hibernate.dialect.MySQLDialect
                              </prop>
                        </props>
                </property>
                <property name="mappingResources">
                        <list>      <!-- 有多少张数据表被映射成类,这里就会有多少对value标签 -->
                              <value>com/SSH/vo/User.hbm.xml</value>
                        </list>
                </property>
      </bean>
      
      <!-- 创建一个BaseDAO对象,并将上面的sessionFactory对象,赋值给BaseDAO对象的sessionFactory成员 -->
      <bean id="baseDAO" class="com.SSH.dao.BaseDAO">
                <property name="sessionFactory" ref="sessionFactory"/>
      </bean>
      
      <!-- 创建一个UserDAO的对象,它把上面的BaseDAO对象的所有成员都继承过来 -->
      <bean id="userDAO" class="com.SSH.dao.impl.UserDAO" parent="baseDAO"/>
      
      <!-- 创建一个LoginAction的对象la, struts.xml中的la对象就是从这里获取的 -->
      <bean id="la" class="com.SSH.action.LoginAction"/>
      
</beans>

新建struts.xml并配置<!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
      <!-- 将struts中的Action对象,交给spring容器来管理 -->
      <constant name="struts.objectFacotry" value="spring" />

      <package name="struts" extends="struts-default">
      
                <action name="login" class="la">
                        <result name="success">/welcome.jsp</result>
                        <result name="error">/error.jsp</result>
                        <result name="index">/index.jsp</result>
                </action>



网页JSP实现效果,详细代码不细述,见附件。



网页实现效果及数据库的构建就不细说了,亲们可以上手试试,由于此文是本人原创,涉及到相关学术问题,仅供大家学习交流,勿用作商业用途!!源码附件:



如果觉得不错,给个好评呗,有不懂的地方也欢迎大家多多交流!!

伟殿天下 发表于 2018-3-8 17:50

cszdn 发表于 2018-3-8 17:31
点击源码附件直接扣我币了,链接还过期了

这篇文章发表时间比较久,由于云盘放不下一部分资料误删了,所以链接失效,不好意思,代码原文已贴出,可复制进去编译运行OK

伟殿天下 发表于 2017-8-1 11:48

欢迎大家踊跃发言!

99910369 发表于 2017-8-1 12:05

谢谢楼主分享!

派对炸弹 发表于 2017-8-17 23:04

正好需要这个,最近正在学ssh,多谢分享

zz1995 发表于 2017-8-22 21:19

过期了啊,我的币

rxxcy 发表于 2017-8-23 13:38

很想自己弄一个ssh 又不会python又不会java的

丶硪很嚣张灬 发表于 2017-8-23 15:19

链接过期了

vale 发表于 2017-8-29 14:57

百度云链接挂了,希望能再发一下

氓之嗤嗤 发表于 2017-9-1 18:22

不错{:301_993:}有可借鉴

幕XX 发表于 2017-9-5 11:48

链接挂了......
页: [1] 2 3
查看完整版本: 〖技术分享〗基于JavaEE架构SSH框架的web项目实现