interlij idea创建给Web项目添加SS2M
2017-06-21 20:34
507 查看
1、系统环境
IDE:InterliJ IDEA 2017.1.4jdk版本:1.8
Maven版本:3.5
struts版本:2.x
spring版本:4.2
Mybatis版本:3.X
数据库:MySQL 5.7 包含user表的sql脚本
其他两个环境搭建请参考:
interlij idea创建给Web项目添加struts2,interlij idea创建给Web项目添加Mybatis,熟悉熟悉
2、spring环境搭建
添加如下依赖:<!-- ********************** Java Servlet API 4.0.0-b01 ********************** --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b01</version> </dependency> <!-- 添加jstl(JSP Standard Tag Library)支持 --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>apache-jstl</artifactId> <version>9.4.6.v20170531</version> </dependency> <!-- ********************** Spring 4.2.4.RELEASE ********************** --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.2.4.RELEASE</version> </dependency>
在resources文件右键,新建xml的spring配置文件,名字是:spring-config (当然你喜欢其他名字也行)
在web.xml的web-app节点下添加如下:
<!--加载spring配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-config.xml</param-value> </context-param> <!--用于初始化Spring容器的Listener--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
3、Spring整合Mybatis
追加如下依赖:<!-- ********************** Mysql JDBC驱动 ********************** --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!-- ********************** Mybatis依赖 ********************** --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <!-- ********************** Mybatis-Spring插件********************** --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- ********************** Druid数据库连接池 ********************** --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <!-- ********************** junit单元测试依赖 ********************** --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
由于spring官方没有对mybatis的支持,所以mybatis在自己社区开发出一个让spring支持mybatis的插件。
最好还是先去看看interlij idea创建给Web项目添加Mybatis,不然你找不到新建的模板。
新建Mybatis配置文件。
新建实体类:
package POJO; import java.util.Date; /** * Created by hui on 2017/6/21. */ public class User { private int id; private String name; private Date birth; private Integer sex; private Integer age; private String phone; private String email; private String pwd; // 各属性getter和setter方法省略,toString方法
关联一下mapper和config文件,在mybatis-config.xm添加如下:
<mappers> <mapper resource="UserDao.xml"></mapper> </mappers>
在UserDAO.xml添加如下:
<select id="getUserById" resultType="POJO.User"> SELECT * FROM USER WHERE id = #{id}; </select>
在UserDAO.java添加如下:
//使用xml配置文件 User getUserById(int id); //不使用配置文件使用注解 @Select("Select * from user where id = #{id}") User getUserByIdForAnnotation(int id);
上面完成了一次配置文件的创建和关联。
下面是与spring整合:
添加jdbc.properties配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/networkalbum?useSSL=false&serverTimezone=GMT%2B8 jdbc.username=root jdbc.password=root
spring配置文件spring-config.xml添加如下:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean>
加载jdbc配置文件
添加dataSource:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 配置监控统计拦截的filters和sql注入 --> <property name="filters" value="stat,wall"/> <!-- 配置初始化大小、最小、最大 --> <property name="maxActive" value="20"/> <property name="initialSize" value="1"/> <property name="minIdle" value="1"/> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true"/> <property name="maxOpenPreparedStatements" value="20"/> </bean>
datasource采用具有连接池的druid,参考spring配置数据库连接池druid
构建sqlSessionFactory:(这是重点,操作数据库都是靠这个类嘛)
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean>
构建一个实现UserDao接口的实体类:
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="POJO.UserDao"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
编写一个单元测试类,看看是否整合:
package space.xxhui; import POJO.User; import POJO.UserDao; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Created by hui on 2017/6/21. */ public class Test { @org.junit.Test public void getMapper(){ BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring-config.xml"); UserDao userDao = (UserDao)beanFactory.getBean("userMapper"); User user = userDao.getUserById(1); System.out.println(user.toString()); User user1 = userDao.getUserByIdForAnnotation(2); System.out.println(user1.toString()); } }
看到输出,说明成功从spring的ioc容器中获取了usermapper类。
3、Spring整合Struts2
追加如下依赖:<!-- ********************** Spring和Struts2的支持插件 ********************** --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24.1</version> </dependency> <!-- ********************** Struts 2.3.24.1 ********************** --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.24.1</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.3.24.1</version> </dependency>
添加Struts2(请参考前面添加Struts2,记得去project structure添加,详情请去看系统环境处的文章),添加完成的效果如下:
在web.xml的web-app节点下,添加如下:
<!--添加Struts2的支持--> <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>
Login.jsp若想要的,请去Struct2搭建的项目里面找到(login.jsp太长了,不贴出来
其中LoginAction如下:
package action; import POJO.UserDao; import com.opensymphony.xwork2.ActionSupport; /** * Created by hui on 2017/6/21. */ public class LoginAction extends ActionSupport { //两个属性名跟Login.jsp的form属性的name一样 //这样struts2框架会自动复制,每个属性需要getter和setter private String username; private String pwd; private UserDao userDao; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } 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; } @Override public String execute() throws Exception { String forword = null; if (username.equals("Hitvz") && pwd.equals("123456")) { forword = ActionSupport.SUCCESS; } else { forword = ActionSupport.INPUT; } return forword; } }
添加完Struct2,接下来Spring整合Struts2.
在Spring配置文件添加如下:
<bean id="loginActionBySpring" class="action.LoginAction"> <property name="userDao" ref="userMapper"></property> </bean>
在strut.xml添加如下:
<constant name="struts.objectFactory" value="spring"/> <!--必须继承自struts-default--> <package name="SSHDemo" extends="struts-default" namespace="/"> <action name="login" class="loginActionBySpring" > <result name="success">index.jsp</result> <result name="input">Login.jsp</result> </action> </package>
这里是整合重点:struct2可以管理对象,而spring也可以管理对象,那么问题来了,到底最后谁来管理生成的对象呢?这里选用Spring来管理对象,应该在spring配置文件配置bean标签,在struts配置文件里的class标签,引用一个spring的实例,如上所示。
4、Struts2与Mybatis整合
spring整合Strut2的操作我并没有查询数据库验证用户在UserDao添加如下方法:
@Select("Select * from user where name = #{user.name} and pwd = #{user.pwd}") User checkUser(@Param("user") User user);
下面改一下LoginAction代码:
@Override public String execute() throws Exception { String forword = null; User userEntity =new User(); userEntity.setName(username); userEntity.setPwd(pwd); //mybatis配置文件中设置了,如果没有查询到返回null User entity = userDao.checkUser(userEntity); if (entity!=null) { System.out.println(entity.toString()); ActionContext.getContext().put("user",entity); forword = ActionSupport.SUCCESS; } else { System.out.println("no such user"); forword = ActionSupport.INPUT; } return forword; }
将固定的验证,变为数据库操作,整合完成
5、SSH的一两个过滤器
放在web.xml的web-app下:<!--配置字符编码过滤器(解决乱码问题)--> <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>
码云-SS2MDemo案例源码
相关文章推荐
- interlij idea创建给Web项目添加struts2
- interlij idea创建给Web项目添加Hibernate
- interlij idea创建给Web项目添加Mybatis
- interlij idea创建给Web项目添加SS2H
- interliJ IDEA创建Web项目添加struts2
- interlij idea创建给Web项目添加Mybatis
- idea14 如何创建传统的web项目 ,添加jar文件
- interlij idea给Web项目添加SSM(零配置文件
- interlij idea给Web项目添加SSM
- idea14 如何创建传统的web项目 ,添加jar文件
- idea手动创建maven项目手动添加web架构
- idea 创建maven web 项目
- IntelliJ IDEA 15 创建maven项目(新建项目Artifacts中无法添加Web Application:Exploded)
- IntelliJ IDEA创建Web SpringMVC项目(二):添加springMVC框架
- IDEA之web项目(maven项目)创建
- Intellij IDEA +Maven创建Web项目
- idea创建maven的web项目
- IDEA 创建Web项目并在Tomcat中部署运行
- ItelliJ IDEA开发工具使用—创建一个web项目
- IDEA 学习(二):Intellij IDEA 创建Web项目并在Tomcat中部署运行IDEA