IEDA开发多项目的示例

前言:慢慢习惯用IDEA了,觉得用起来确实还不错,有VS的感觉,但是缺点就是每次启动慢,如果修改以后反应也需要好久,这方面做得不好。但是职能提示个人觉得要比Eclipse好太多。好了现在我用IDEA来开发一个简单的功能,希望给刚刚使用不太熟悉或者准备使用IDEA的开发者一点帮助。

1:需求

我们开发一个项目基本的需要一个domain层、dao层、Service层、web层。有的时候我们也需要comment层(存放一些公告调用的一些类)

2:创建项目

第一步:我们先创建一个父工程。

点击file然后选择new选择项目然后到下面界面

然后按照他的提示下一步就成功的创建了父工程了。然后在pom中把packaging修改为pom,删除src整个目录。

第二步:创建子工程

找到你刚刚创建的父工程右击如下图

选择以后出现如下图的界面选择你需要的原型,比如(如果你要创建web就可以选择web,也可以不选择)

最后你对你的模块进行命名就可以了。

3:配置

请参考http://www.cnblogs.com/LipeiNet/p/5810251.html这个进行配置。

4:实战

主要功能就是添加用户到库中

在父工程的pom中把公共依然的jar引入,这是我引用的如下

<properties>
        <spring_version>3.1.0.RELEASE</spring_version>
    </properties>
 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring_version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring_version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring_version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>com.migr.common</groupId>
            <artifactId>migr-common-util</artifactId>
            <version>1.0</version>
        </dependency>

然后在domain工程中可以定义自己的实体类比喻我的就是一个UserBean类如下

public class UserBean implements Serializable{
    private int id;//用户自增长id
    private String username;//用户名
    private String password;//密码
    private String realname;//真实姓名
    private int userroleid;//用户角色id;
    private Date createdate;//添加日期
    public String getUsername() {
        return username;
    }

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

    public int getId() {
        return id;
    }

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

    public String getPassword() {
        return password;
    }

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

    public String getRealname() {
        return realname;
    }

    public void setRealname(String realname) {
        this.realname = realname;
    }

    public int getUserroleid() {
        return userroleid;
    }

    public void setUserroleid(int userroleid) {
        this.userroleid = userroleid;
    }

    public Date getCreatedate() {
        return createdate;
    }

    public void setCreatedate(Date createdate) {
        this.createdate = createdate;
    }
}

在开始定义dao工程,在这里采用的是Mybatis,所以要把Mybatis jar包引进过来

 <dependency>
            <groupId>com.lp.rpc</groupId>
            <artifactId>web-domain</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.7</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>

定义dao中的接口和实现类

public interface UserDao {
    /**
     * 添加用户
     * @param userBean 用户信息
     * @return
     */
    int add(UserBean userBean);

    /**
     * 验证用户是否存在
     * @param userBean 用户信息
     * @return
     */
    int isExistUser(UserBean userBean);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.lp.rpc.dao.UserDao">
<insert id="add" parameterType="com.lp.web.beans.UserBean" keyProperty="id" useGeneratedKeys="true">
    INSERT INTO user(username,password,realname,userroleid,createdate)VALUES
    (#{username},#{password},#{realname},#{userroleid},#{createdate})
</insert>
    <select id="isExistUser" parameterType="com.lp.web.beans.UserBean" resultType="java.lang.Integer">
        SELECT COUNT(1) FROM user WHERE username=#{username} AND password=#{password}
    </select>
</mapper>

注意的是可以把这个dao写在resource中如下图

竟然写完dao层了我们就要进行数据源的配置如下

spring-config-dao.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.xsd">
    <import resource="spring-config-datasource.xml"/>
    <!-- myBatis文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
        <property name="mapperLocations" value="classpath:sql/*.xml" />
    </bean>
    <!-- 注入映射的接口类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.lp.rpc.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
</beans>

spring-config-datasource.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.xsd">
<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/usermanagerdb?useUnicode=true"></property>
    <property name="username" value="root"></property>
    <property name="password" value="123456"></property>
    <!--设置连接池初始值-->
    <property name="initialSize" value="5"></property>
    <!--设置连接池最大值-->
    <property name="maxActive" value="200"></property>
    <!--最大等待-->
    <property name="maxWait" value="10000"></property>
    <!--设置连接池最大空闲值-->
    <property name="maxIdle" value="10"></property>
    <!--设置连接池最小空闲值-->
    <property name="minIdle" value="5"></property>
</bean>
</beans>

Service工程在这里比较简单

public interface UserService {
   /**
    * 添加用户信息
    * @param userBean
    * @return
     */
   boolean add(UserBean userBean);

   /**
    * 验证用户是否存在
    * @param userBean
    * @return
     */
   boolean isExist(UserBean userBean);
}
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public boolean add(UserBean userBean) {
        if (userDao.add(userBean)>=0){
            return true;
        }
        return false;
    }

    public boolean isExist(UserBean userBean) {
        if (userDao.isExistUser(userBean)>0){
            return true;
        }
        return false;
    }
}

最后我们进可以进行web工程了

pom中需要引用下面这几个依赖包

 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

然后建立如下的目录

然后add.jsp如下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加用户</title>
</head>
<body>
<form action="/user/save" method="post">
    <table>
        <tr>
            <td>用户名:<input type="text" name="username"></td>
            <td>密码:<input type="text" name="password"></td>

        </tr>
        <tr>
            <td>真实姓名:<input type="text" name="realname"></td>
            <td>用户角色id:<input type="text" name="userroleid"></td>
        </tr>
        <tr>
            <td><input type="submit" value="提交"></td>
            <td><input type="reset" value="重置"></td>
        </tr>
    </table>
</form>
</body>
</html>

然后在定义一个UserController

package com.lp.rpc;

import com.lp.web.beans.UserBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;

/**
 * Created by Administrator on 2016/9/2.
 */
@Controller
@RequestMapping(value = "/user/")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping(value = "dologin",method = RequestMethod.POST)
     public ModelAndView login(HttpServletRequest request, HttpServletResponse response) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        UserBean userBean = new UserBean();
        userBean.setUsername(username);
        userBean.setPassword(password);
        if (userService.isExist(userBean)){
            return new ModelAndView("successful");
        }
        return new ModelAndView("add");
    }

    @RequestMapping(value = "add",method = RequestMethod.POST)
    public String add(){
        return "add";
    }
    @RequestMapping(value = "save",method = RequestMethod.POST)
    public String save(HttpServletRequest request, HttpServletResponse response)
    {
        String userName=request.getParameter("username");
        String password=request.getParameter("password");
        String userroleid=request.getParameter("userroleid");
        String realname=request.getParameter("realname");
        UserBean userBean=new UserBean();
        userBean.setUsername(userName);
        userBean.setPassword(password);
        userBean.setCreatedate(new Date());
        userBean.setRealname(realname);
        userBean.setUserroleid(Integer.parseInt(userroleid));
       if (userService.add(userBean)){
           return "successful";
       }
        return "error";
    }
}

然后进行配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>
  <!--springmvc开始-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
        

然后在进行配置Servlet解析器

<?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.xsd">
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
        <property name="contentType" value="text/html;charset=UTF-8" />
    </bean>
</beans>

最后把所有的配置文件导入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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<import resource="classpath:spring-config-dao.xml"></import>
    <import resource="spring-servlet.xml"></import>
    <context:component-scan base-package="com.lp.*"/>
    <context:annotation-config/>
</beans>

演示结果:

然后用zhangsan(库中不存在)去登陆就会跳转到添加用户页面

点击提交

如果在添加的时候java不是资源目标记得要转换下

ok结束了,主要流程基本就是这样的,如果没有使用过IDEA的或者初学者按照写一遍应该会明白IDEA的基本使用。源码等把基于rest的rpc写完了以后一起上传github上。

时间: 2024-08-05 14:58:36

IEDA开发多项目的示例的相关文章

将基于Dagger-1开发的项目迁移到Dagger-2中

原文链接 : Dagger 1 to 2 migration process 原文作者 : Miroslaw Stanek 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: tiiime 状态 : 完成 我相信每一个 Android 开发者都听说过依赖注入框架,事实上几乎所有 Android 官方会议都讨论过软件设计模式.虽然我是依赖注入的脑残粉,但我不得不承认也有人不喜欢依赖注入,主要原因如下: 依赖注入框架很慢 - 好吧,在使用 RoboGuice

开发技巧----------项目中常量类的定义方式

问题: 有开发经验的同学都知道,常量类是一个最常用的定义数据字典的方式.但是随着项目的开发时间和开发团队的变化经常会出现2中特别苦逼的情况.第一种情况是项目中到处都能看到各种各样的常量类:第二种情况是一个常量类里定义非常多的常量,甚至有的超过100了.这两种情况的缺点估计大家都非常的清楚,第一种代码离散.冗余.维护难:第二种也是维护难,更痛苦的时候用ide的时候很难找到自己需要的常量. 解决办法: 1.使用静态内部类对常量进行分组(可以多级分组,但是建议最多3级) 2.外部文件(这里不讨论) 3

SSM框架开发web项目系列(二) MyBatis真正的力量

前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBatis的基础内容,包括基本概念.开发步骤.使用实例等.说起MyBatis,工作中做过SSH/SSM相关Web开发的或者正在学习MyBatis的人或多或少都会接触到类似“MyBatis和Hibernate有什么区别?”,“MyBatis和Hibernate哪个更好?”,“为什么Mybatis用的人越来

使用Eclipse开发Web项目(JSP)——简单登录、无sql

1.使用Eclipse开发Web项目(JSP) tomcat 2.在Eclipse中创建的Web项目: 浏览器可以直接访问webContent中的文件 例如http://localhost:8080/MyJspProject/index1.jsp 其中的index1.jsp就在WebContent目录中: 但是WEB-INF中的文件 无法通过客户端(浏览器)直接访问,只能通过请求转发来访问 注意:并不是任何的内部跳转都能访问WEB-INF:原因是跳转有两种方式:请求转发.重定向 3.配置tomc

webstorm/...开发 NodeJS 项目

前提: 已安装好 webstorm/IDEA 2016.3 & 2017.1 (见 文 IDEA开发Java 相关 --- 1 IDEA安装 ...) 要用 IDEA 开发 NodeJS项目(web/JS)项目,首先需要: 1. 自行下载 Node.js 并安装,下载网址:https://nodejs.org/en/download/:或者 https://nodejs.org/en/: 测试: cmd-> node -v  或者 node, 未出现错误,如下,则表明已安装完好.   其次,

Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店

#1.用Eclipse的话导出app其实还是很容易的.大家看我的步骤.有图有真相哦 选择一个项目 创建一个新的,位置随便,下面是密码 这里都是一些名字,地区,组织,国家.看你们自己的了 选择你要存放apk的位置 打完收工 Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店,布布扣,bubuko.com

Android开发把项目打包成apk-(转)

做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk".将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装.Android系统要求具有其开发者签名的私人密钥的应用程序才能够被安装.生成数字签名以及打包项目成APK都可以采用命令行的方式,但是通过Eclipse中的向导我们会更加方便地完成整个流程,打包发布的过程非

上门洗车APP --- Androidclient开发 之 项目结构介绍

上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分享了项目中的以下内容: 上门洗车APP --- Androidclient开发 前言及业务简介 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(一) 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二) 之前有非常多朋友私信过来说想打包一份源代码学习

搭建maven artifactory 私服在开发Maven项目的问题

搭建maven artifactory 私服在开发Maven项目. 第一步.安装虚拟机,在虚拟机上安装centos6.5.下载artifactory3.9.2解压开.运行artifactory.sh 默认端口8081,用户名admin,密码password. 可以通过网络访问 http://192.168.1.111:8081/artifactory 请记得要把linux的防火墙关了.service iptables stop. 在自己搭建maven artifactory私服由于网络问题有时无