IDEA楼主也是刚使用没几天,用起来确实比MyEclipse或者Eclipse方便,代码提示功能真的有可以“飞上天”的感觉(
),强烈建议开发人员使用,无论使用什么开发工具都会有个过渡期,刚开始的两三天肯定会不舒服,一回生二回熟,当你习惯IDEA以后,你会爱不释手,(绝壁顺手*****五颗星推荐),好了,多余的话我们就不多说了,高质量的代码并非由工具来决定的。进入今天的正题:
IDEA使用Maven搭建SSM项目(MyEclipse建立ssm框架Demo可点击这里:点我呀)
一、 IDEA的激活:这里给大家一个网址:http://idea.iteblog.com/
这里提供了两种方式激活:
- 按要求输入就行,(这种方式激活后,有一定的时间限制,但是后面开发时有网无网都可以使用)
- 输入“http://idea.iteblog.com/key.php” (此种方式也可以激活,据说只有在网时才能使用)
二、maven的安装,csdn上有很多教程,这里就不再陈述了,有一点需要说明的是:使用maven时,oracle由于版权问题,无法在pom.xml中下载驱动包,这个就要手动安装oracle驱动包到本地maven仓库中了,具体方法也可以去http://blog.csdn.net/sutongxuevip/article/details/54574156 查看,安装完成后我们就可以愉快地使用oracle数据库了
三、Demo开始,跟往常一样,我们还是分步骤:
- File--》Project
![]()
- 更改空间名称
![]()
- Cancel
![]()
- 关闭后选择 this window ==》File ==>settings ==》 maven
![]()
- Apply==>OK==>File ==> New ==> Module
![]()
![]()
既然建立ssm框架,我们要明确ssm框架所需jar
这里列举的只是所必需要有的jar,还有其它。。。junit-4.8.2.jar mybatis-3.4.1.jar mybatis-spring-1.3.0.jar ojdbc14.jar spring-aop-4.3.5.RELEASE.jar spring-aspects-4.3.5.RELEASE.jar spring-beans-4.3.5.RELEASE.jar spring-context-4.3.5.RELEASE.jar spring-context-support-4.3.5.RELEASE.jar spring-core-4.3.5.RELEASE.jar spring-expression-4.3.5.RELEASE.jar spring-jdbc-4.3.5.RELEASE.jar spring-tx-4.3.5.RELEASE.jar spring-web-4.3.5.RELEASE.jar spring-webmvc-4.3.5.RELEASE.jar
- 修改pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ssm</groupId> <artifactId>Demo</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Demo Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- spring版本号 --> <spring.version>4.3.5.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.8</mybatis.version> </properties> <dependencies> <!-- springmvc所需jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</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-tx</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-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</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-expression</artifactId> <version>${spring.version}</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis-spring所需jar --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.18</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.18</version> </dependency> <!-- json --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <!-- 上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!-- jstl标签 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- jsp-api --> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.2-b02</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b01</version> </dependency> <!-- junit测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- oracle 数据库添加 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>11.1.0.6.0</version> </dependency> </dependencies> <build> <finalName>Demo</finalName> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project>
这里我们使用的是oracle数据库,IDEA默认是不支持oracle数据库的。需要手动添加oracle驱动到本地的maven仓库中。(详情可查看: http://blog.csdn.net/sutongxuevip/article/details/54574156)如果pom.xml里面的参数不知道该怎么去写,我们可以去 http://mvnrepository.com/
输入所需要的jar就可以查看该参数了例如:spring-aop.jar![]()
![]()
![]()
- src--main--》java--》新建包
![]()
- resources中编写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" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 配置DataSource数据源 --> <bean id="dataSource" class=" org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.6.25:1521:orcl"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> </bean> <!--配置工厂, 创建SqlSessionFactory,同时指定数据源 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:com/ssm/entity/EmpMapper.xml"></property> </bean> <!-- 配置MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- DAO接口所在地包,spring会自动查找 --> <property name="basePackage" value="com.ssm.dao"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- 开启注解扫描 --> <context:component-scan base-package="com.ssm"/> <!-- 开启RequestMapping 注解 --> <mvc:annotation-driven /> <!-- 处理请求转发 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/emp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
我们只是做个简单的Demo,这里的配置并没有写完整,只写了所必须的
- 在resources下编辑log4j.properties文件
#\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B log4j.rootLogger = info ,stdout,D log4j.logger.com.wisemedia = info ### \u8f93\u51fa\u5230\u63a7\u5236\u53f0 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n ### \u8f93\u51fa\u5230\u65e5\u5fd7\u6587\u4ef6 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = D:/logs/log.log log4j.appender.D.Append = true ## \u8f93\u51faDEBUG\u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7 log4j.appender.D.Threshold = info log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #mybatis\u663e\u793aSQL\u8bed\u53e5\u65e5\u5fd7\u914d\u7f6e log4j.logger.java.sql=debug,sqlLog log4j.appender.sqlLog=org.apache.log4j.DailyRollingFileAppender log4j.appender.sqlLog.File=D:/logs/sqlLog.log log4j.appender.sqlLog.layout=org.apache.log4j.PatternLayout log4j.appender.sqlLog.layout.ConversionPattern=%d %p %m%n
这里的日志不是输出在控制台的,是在D盘下的logs文件下,需要手动创建该文件夹
- 编写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" version="3.0"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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*: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> <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
- 编辑实体类
Emp实体类package com.ssm.dao; import java.util.Date; /** * Created by LiangYafeng on 2017.01.16. */ public class Emp { private Integer empno; private String ename; private String job; private Integer mgr; private Date hiredate; private Double sal; private Double comm; private Integer deptno; public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public Double getComm() { return comm; } public void setComm(Double comm) { this.comm = comm; } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } }
- Condition实体类
package com.ssm.entity; import java.util.List; /** * Created by LiangYafeng on 2017.01.16. */ public class Condition { private Integer deptno; private Double salary; private List<Integer> empnos; public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } public List<Integer> getEmpnos() { return empnos; } public void setEmpnos(List<Integer> empnos) { this.empnos = empnos; } }
- EmpMapper.xml文件
<?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.ssm.dao.EmpDao"> <select id="findAll" resultType="com.ssm.entity.Emp"> select * from t_emp order by empno </select> <insert id="save" parameterType="com.ssm.entity.Emp"> insert into t_emp values( emp_seq.nextval, #{ename,jdbcType=VARCHAR}, #{job,jdbcType=VARCHAR}, #{mgr,jdbcType=NUMERIC}, #{hiredate,jdbcType=DATE}, #{sal,jdbcType=NUMERIC}, #{comm,jdbcType=NUMERIC}, #{deptno,jdbcType=NUMERIC} ) </insert> <select id="findById" parameterType="java.lang.Integer" resultType="com.ssm.entity.Emp"> select * from t_emp where empno=#{id} </select> <update id="update" parameterType="com.ssm.entity.Emp"> update t_emp set ename = #{ename,jdbcType=VARCHAR}, job = #{job,jdbcType=VARCHAR}, sal = #{sal,jdbcType=NUMERIC} where empno=#{empno,jdbcType=NUMERIC} </update> <delete id="delete" parameterType="java.lang.Integer"> delete from t_emp where empno=#{id} </delete> </mapper>
- 编写EmpDao接口
package com.ssm.dao; import com.ssm.entity.Emp; import java.util.List; /** * Created by LiangYafeng on 2017.01.16. */ public interface EmpDao { public List<Emp> findAll(); // 查询全部 public void save(Emp emp); // 添加 public Emp findById(int id); // 按id查询 public void update(Emp emp); // 更新 public void delete(int id); // 删除 }
- 编写Controller类
package com.ssm.controller; import com.ssm.dao.EmpDao; import com.ssm.entity.Emp; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import java.util.List; /** * Created by LiangYafeng on 2017.01.16. */ @Controller public class EmpController { @Resource private EmpDao empDao; public void setEmpDao(EmpDao empDao) { this.empDao = empDao; } @RequestMapping("/find.do") public String find(Model model) { List<Emp> list = empDao.findAll(); model.addAttribute("emps", list); return "emp_list"; } /* * 打开新页面 */ @RequestMapping("/toAddEmp.do") public String toAdd(){ return "add_emp"; } /* * 新增保存 */ @RequestMapping("/addEmp.do") public String add(Emp emp){ empDao.save(emp); return "redirect:find.do"; } /* * 打开修改页面 */ @RequestMapping("/toUpdateEmp.do") public String toUpdate(@RequestParam("id") int id, Model model){ Emp emp =empDao.findById(id); model.addAttribute("emp",emp); return "update_emp"; } /* * 修改保存 */ @RequestMapping("/updateEmp.do") public String update(Emp emp){ empDao.update(emp); return "redirect:find.do"; } /* * 删除 */ @RequestMapping("/deleteEmp.do") public String delete(@RequestParam("id") int id){ empDao.delete(id); return "redirect:find.do"; } }
- 在WEB-INF下建立emp文件夹编辑jsp页面
- emp_list.jsp
<%-- Created by IntelliJ IDEA. User: LiangYafeng Date: 2017.01.16 Time: 17:27 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>emp_list.jsp</title> <script type="text/javascript"> function delete_emp(id){ var str = window.confirm("are you sure ?"); if(str){ location.href="deleteEmp.do?id="+id; } } </script> </head> <body> <div align="center"> <input type="button" value="新增" οnclick="location.href='toAddEmp.do'" > </div> <table width="80%" border="1" cellpadding="2" cellspacing="0" align="center"> <tr> <th>EMPNO</th> <th>ENAME</th> <th>JOB</th> <th>MGR</th> <th>HIREDATE</th> <th>SAL</th> <th>COMM</th> <th>DEPTNO</th> </tr> <c:forEach items="${emps}" var="emp"> <tr> <td>${emp.empno}</td> <td>${emp.ename}</td> <td>${emp.job}</td> <td>${emp.mgr}</td> <td>${emp.hiredate}</td> <td>${emp.sal}</td> <td>${emp.comm}</td> <td>${emp.deptno}</td> <td> <input type="button" value="修改" οnclick="location.href='toUpdateEmp.do?id=${emp.empno}'" /> <input type="button" value="删除" οnclick="delete_emp(${emp.empno});" /> </td> </tr> </c:forEach> </table> </body> </html>
- emp_add.jsp
<%-- Created by IntelliJ IDEA. User: LiangYafeng Date: 2017.01.16 Time: 17:29 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>add_emp.jsp</title> </head> <body> <form action="addEmp.do" method="post"> <table width="40%" border="1" cellpadding="2" cellspacing="0" align="center" > <tr> <td>姓名</td> <td><input type="text" name="ename" /></td> </tr> <tr> <td>岗位</td> <td><input type="text" name="job" /></td> </tr> <tr> <td>工资</td> <td><input type="text" name="sal" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="保存" /></td> </tr> </table> </form> </body> </html>
- emp_update.jsp
<%-- Created by IntelliJ IDEA. User: LiangYafeng Date: 2017.01.16 Time: 17:30 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <form action="updateEmp.do" method="post"> <table width="40%" align="center" border="1" cellpadding="2" cellspacing="0" > <tr> <td>EMPNO:</td> <td><input type="text" name="empno" value="${emp.empno }" > </td> </tr> <tr> <td>姓名:</td> <td><input type="text" name="ename" value="${emp.ename }" > </td> </tr> <tr> <td>岗位:</td> <td><input type="text" name="job" value="${emp.job }" > </td> </tr> <tr> <td>工资:</td> <td><input type="text" name="sal" value="${emp.sal }" > </td> </tr> <tr> <td> <input type="submit" value="保存" > </td> </tr> </table> </form> </body> </html>
- 配置Toncat
- 访问页面 http://localhost:8080/ssm/find.do
![]()
- 项目源码:点击下载