文档章节

基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登...

qsyan
 qsyan
发布于 2012/12/16 12:15
字数 1638
阅读 30367
收藏 29
点赞 7
评论 6

如果你觉得本教程或者项目源码对你有用,请支持下,或者点击网页下方打赏按钮,谢谢

    首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍到eclipse无法比拟,此款ide理解上下文是一等一的,不用什么jquery插件,extjs插件,都可以实现全智能的代码提示。速度什么的都比myeclipse快。而且IDEA提供了android支持struts spring hibernate 支持。下面,我讲教大家完成一个基于全注解的Spirng3.2+hibernate4+struts2.3 登录项目,本人对Java极其热爱,爱好Java编程的朋友可以加QQ群:185441009

第一步 创建工程:

图中的project name 就是eclipse里的workspace,下面有个额module name,这个module 才是真正的项目,如果你不改名字,它会自动创建一个跟project name一样的工程。

点 next

选择相应的框架,包括application server tomcat,这里要说明的是,选择的时候它会提示是否下载所依赖的jar

 

记住要选中上图中Level为为global 意思就是这个lib是Userlibary,同理,spring hibernate 亦是如此。

完了之后 finish,项目就创建完毕了。

第二步,配置lib

ide下载的jar并不是完美的,有些冲突,有些少包多包。项目上右键,选择打开project Structure 选择global library,这里可以配置lib。

经过修整,最终导入的包如下。

 

第三步 搭建ssh框架

web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.ui.theme</param-name>
            <param-value>simple</param-value>
        </init-param>
        <init-param>
            <param-name>struts.objectFactory</param-name>
            <param-value>spring</param-value>
        </init-param>
        <init-param>
            <param-name>struts.convention.action.packages</param-name> //这是注解加载action类的时候用的
            <param-value>com.blog.actions</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

 

第二步 配置数据源

点击ide右边的database

然后右击 add 按照步骤一步一步添加数据源 完成之后如图所示

 

之后选中IDE侧面的 persistence 选中hibernate.cfg.xml 右击

 

 

 

选择 genernate mapping,按照步骤生成带注解的pojo类。

创建相应的配置文件 和 java 类 工程结构如图所示 struts无需配置。

 

 

 

hibernate 配置文件:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        " http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost:3306/blog</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">1800</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <mapping class="com.blog.entity.AppInitEntity"/>
        <mapping class="com.blog.entity.ArticleEntity"/>
        <mapping class="com.blog.entity.CommentEntity"/>
        <mapping class="com.blog.entity.UserEntity"/>
        <!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
    </session-factory>
</hibernate-configuration>

 

spring 配置文件

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <context:component-scan base-package="com.blog">
    </context:component-scan>

    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean>

</beans>

 

loginAction

package com.blog.actions;

import com.blog.dao.UserDao;
import com.blog.entity.UserEntity;
import com.blog.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午12:31
 * To change this template use File | Settings | File Templates.
 */
@Controller
@Namespace("/")
@Action("login")
@Results({@Result(name = "success", location = "/welcome.jsp"), @Result(name = "error", location = "/index.jsp")})


public class LoginAction extends ActionSupport {

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    private String userName;
    private String pwd;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    private String message;

    @Resource
    UserService userService;

    public void check() {

        Integer id = 1;
        UserEntity userEntity = userService.findById(id);
        System.out.println(userEntity.getUserName());

    }
}

 

UserDao

package com.blog.dao;

import com.blog.entity.UserEntity;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午8:46
 * To change this template use File | Settings | File Templates.
 */
public interface UserDao {

    public UserEntity findById(Object id);
}

 

UserDaoImpl

package com.blog.daoimpl;

import com.blog.dao.UserDao;
import com.blog.entity.UserEntity;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.logging.Logger;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午8:52
 * To change this template use File | Settings | File Templates.
 */
@Repository
public class UserDaoImpl extends SuperDao implements UserDao {

    static Logger logger = Logger.getLogger(UserDaoImpl.class.toString());


    @Override
    public UserEntity findById(Object id) {
        UserEntity userEntity = null;
        try {
            Session session=sessionFactory.openSession();
            userEntity = (UserEntity) session.load(UserEntity.class, (Serializable) id);
            logger.info("id:" + id);
        } catch (DataAccessException e) {
            logger.info(e.toString());
        }
        return userEntity;
    }

超类 SuperDao

package com.blog.daoimpl;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;


/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午8:49
 * To change this template use File | Settings | File Templates.
 */
@Component
public class SuperDao {
    @Resource
    SessionFactory sessionFactory;

}

 

 UserEntity 实体类

package com.blog.entity;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.sql.Timestamp;
import java.util.Collection;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午2:05
 * To change this template use File | Settings | File Templates.
 */
@javax.persistence.Table(name = "user", schema = "", catalog = "blog")
@Entity
public class UserEntity {
    private int userId;

    @javax.persistence.Column(name = "user_id", nullable = false, insertable = true, updatable = true, length = 10, precision = 0)
    @Id
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    private String userName;

    @javax.persistence.Column(name = "user_name", nullable = false, insertable = true, updatable = true, length = 50, precision = 0)
    @Basic
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    private String pwd;

    @javax.persistence.Column(name = "pwd", nullable = false, insertable = true, updatable = true, length = 50, precision = 0)
    @Basic
    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    private String email;

    @javax.persistence.Column(name = "email", nullable = false, insertable = true, updatable = true, length = 50, precision = 0)
    @Basic
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    private Timestamp regTime;

    @javax.persistence.Column(name = "reg_time", nullable = false, insertable = true, updatable = true, length = 19, precision = 0)
    @Basic
    public Timestamp getRegTime() {
        return regTime;
    }

    public void setRegTime(Timestamp regTime) {
        this.regTime = regTime;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        UserEntity that = (UserEntity) o;

        if (userId != that.userId) return false;
        if (email != null ? !email.equals(that.email) : that.email != null) return false;
        if (pwd != null ? !pwd.equals(that.pwd) : that.pwd != null) return false;
        if (regTime != null ? !regTime.equals(that.regTime) : that.regTime != null) return false;
        if (userName != null ? !userName.equals(that.userName) : that.userName != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = userId;
        result = 31 * result + (userName != null ? userName.hashCode() : 0);
        result = 31 * result + (pwd != null ? pwd.hashCode() : 0);
        result = 31 * result + (email != null ? email.hashCode() : 0);
        result = 31 * result + (regTime != null ? regTime.hashCode() : 0);
        return result;
    }

    private Collection<ArticleEntity> articlesByUserId;

    @OneToMany(mappedBy = "userByUserId")
    public Collection<ArticleEntity> getArticlesByUserId() {
        return articlesByUserId;
    }

    public void setArticlesByUserId(Collection<ArticleEntity> articlesByUserId) {
        this.articlesByUserId = articlesByUserId;
    }
}

 UserService

package com.blog.service;

import com.blog.entity.UserEntity;

import java.security.PrivateKey;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午8:43
 * To change this template use File | Settings | File Templates.
 */
public interface UserService {


    public UserEntity findById(Object id);


}

 

UserServiceImpl

package com.blog.serviceimpl;

import com.blog.dao.UserDao;
import com.blog.daoimpl.UserDaoImpl;
import com.blog.entity.UserEntity;
import com.blog.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Created with IntelliJ IDEA.
 * User: Juyan
 * Date: 12-12-15
 * Time: 下午8:47
 * To change this template use File | Settings | File Templates.
 */
@Service
public class UserServiceImpl implements UserService {

    @Resource
    UserDao userDao;

    @Override
    public UserEntity findById(Object id) {
        return userDao.findById(id);
    }
}

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: Juyan
  Date: 12-12-15
  Time: 下午12:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Login</title>
  </head>
  <body>
              <s:form action="login" namespace="/"  method="POST">
                  用户名:<s:textfield name="userName"  />
                  密码:<s:password name="pwd"/>
                                  <s:submit name="登录" method="check"/>
              </s:form>
              <s:property value="message"/>
  </body>
</html>

 

配置完毕后,点击上面的tomcat毛旁边的运行按钮。说是登陆,其实我只查询了对象。数据库是mysql,自己创建吧。user表里面有个id字段。道理是一样的。

还有什么问题加我QQ.

 

© 著作权归作者所有

共有 人打赏支持
qsyan
粉丝 29
博文 38
码字总数 7103
作品 1
宝鸡
其他
加载中

评论(6)

兮无颜
兮无颜

引用来自“kmkim”的评论

怎么有struts2了,还加了spring mvc
对啊,不是应该用struct1.x吗?还有需要用spring里面的MVC吗?不是只要使用structs1.x里面的就好了嘛?我也是新手不怎么会创建那
qsyan
qsyan

引用来自“kmkim”的评论

怎么有struts2了,还加了spring mvc
没有spring mvc呀
k
kmkim
怎么有struts2了,还加了spring mvc
Brokedge
Brokedge
cool
java9
java9
支持
java9
java9
支持
IntelliJ IDEA 发布13版本——创造java奇迹

IntelliJ IDEA被公认为业界最好的Java开发平台。此次发布的了13版本,更是集合了与Java EE、Android、Spring、Scala和Gradle最新合作与支持。 Java EE 7 IntelliJ IDEA v13采用Java EE 7将致...

kouxunli1
2013/12/06
0
4
Spring Boot HelloWorld 解析

开发环境 开发工具:IDEA 2017.2.2 链接: https://pan.baidu.com/s/1qxZLZtBR-Xr7JVkgmhZWzw 密码: wsqp 激活教程:http://idea.lanyus.com/ Spring Boot:2.0.3.RELEASE 参考文档:https://d......

爱编程的帅小伙
07/02
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(2)

第二步:使用Spark的cache机制观察一下效率的提升 基于上面的内容,我们在执行一下以下语句: 发现同样计算结果是15. 此时我们在进入Web控制台: 发现控制台中清晰展示我们执行了两次“count...

Spark亚太研究院
2014/09/17
0
0
spring security 3.2.0.M1 方法级别教程 基于注解——第一部分

说明 一直在用spring security与shiro权限框架。最近spring security升级到了3.2.0.M1,所以更新了一下,看一下是否还是可以按照老方法使用。 基于方法级别的权限控制 spring security通过用户...

欧阳澄泓
2013/06/24
0
0
图解IntelliJ IDEA 13版本对Android SQLite数据库的支持

IntelliJ IDEA 13版本的重要构建之一是支持Android程序开发。当然对Android SQLite数据库的支持也就成为了Android开发者对IntelliJ IDEA 13版本的绝对关注。 值得高兴的是开发者现在可以直接...

kouxunli1
2014/01/08
0
0
代码生成利器:IDEA 强大的 Live Templates

原文出处:肖汉松 前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能...

肖汉松
2017/12/29
0
0
Maven 与 IntelliJ IDEA 的完美结合

你是否正在学习Maven?是否因为Maven难用而又不得不用而苦恼?是否对Eclipse于Maven的冲突而困惑? 那么我告诉你一个更直接更简单的解决方案: IntelliJ IDEA! 1. 什么是 Maven,为什么要使用...

Java编程思想
2014/01/02
0
0
PhpStorm 2018.1.3 发布,包括新功能和错误修复

PhpStorm 2018.1.3(build 181.4892.97) 已发布,可通过 Toolbox 获取更新,也可直接下载 PhpStorm 2018.1.3。 该版本提供了新功能、bug 修复和改进,还采用了 IntelliJ 平台中的最新改进。有...

局长
05/10
0
0
探秘IntelliJ IDEA v13的应用服务器

IntelliJ IDEA v13应用out-of-the-box支持众多企业级和开源的服务器,包括:GlassFish、WebLogic、 JBoss EAP、Wildfly、WebSphere、Tomcat、TomEE、Jetty、 Geronimo、Resin和Virgo。 在Set...

kouxunli1
2014/01/24
0
0
如何永久激活(破解) IntelliJ IDEA 2018.1.3

1、去官网下载并安装 idea 地址:https://www.jetbrains.com/idea/download 文件有点大,耐心等待一会儿。 2、下载破解(crack) jar 包 地址 http://idea.lanyus.com/jar/JetbrainsCrack-2.7-...

志哥
05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
15分钟前
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
35分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
58分钟前
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
59分钟前
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
今天
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
今天
1
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
今天
1
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
今天
1
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
今天
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部