interlij idea创建给Web项目添加SS2H
来源:互联网 发布:朗读软件手机版 编辑:程序博客网 时间:2024/06/06 03:53
1、系统环境
IDE:InterliJ IDEA 2017.1.4
jdk版本:1.8
Maven版本:3.5
hibernate版本:5.2.x
spring版本:4.2
struts版本:2.3
数据库:MySQL 5.7 包含user表的sql脚本
其他两个环境搭建请参考: interlij idea创建给Web项目添加Hibernate、interlij idea创建给Web项目添加struts2,熟悉熟悉
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整合Hibernate
追加如下依赖:
<!-- ********************** Hibernate 5.0.6.Final ********************** --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.0.6.Final</version> </dependency> <!-- ********************** MySQL 5.1.38 ********************** --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!-- ********************** Java Transaction API 1.1 ********************** --> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency>
添加Hibernate(请参考前面添加Hibernate,记得去project structure添加),添加完成的效果如下:
其中url:jdbc:mysql://localhost:3306/networkalbum?useSSL=false&serverTimezone=GMT%2B8
Hibernate的数据库映射到xml自己看前面的 interlij idea创建给Web项目添加Hibernate
其中UserDAO:
package DAO;import POJO.UserEntity;import java.util.List;/** * Created by hui on 2017/6/12. */public interface UserDao { public UserEntity checkUser(UserEntity user); public void addUser(UserEntity user); public List<UserEntity> queryAllUser();}
ImpUserDAO如下:
package DAO.imp;import DAO.UserDao;import POJO.UserEntity;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import java.util.List;/** * Created by hui on 2017/6/12. */public class ImpUserDAO extends HibernateDaoSupport implements UserDao { public UserEntity checkUser(UserEntity user) { String hql="from UserEntity u where u.name=? and u.pwd=?"; List<UserEntity> list = (List<UserEntity>) this.getHibernateTemplate().find(hql,new String[]{user.getName(),user.getPwd()}); if(list!=null&&!list.isEmpty()&&list.size()==1){ return list.get(0); } return null; } public void addUser(UserEntity user) { this.getHibernateTemplate().save(user); } public List<UserEntity> queryAllUser() { return (List<UserEntity>) getHibernateTemplate().find("from UserEntity "); }}
两个框架大起来了,接写来整合:
spring配置文件,添加如下:
<!--配置sessionFactory--> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean> <bean id="userDAO" class="DAO.imp.ImpUserDAO"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>
配置完成,接着看看整合成功与否
index.jsp改成这样子,直接将下面代码覆盖进去就行了:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="org.springframework.context.support.ClassPathXmlApplicationContext" %><%@ page import="org.springframework.beans.factory.BeanFactory" %><%@ page import="DAO.UserDao" %><%@ page import="POJO.UserEntity" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><body><% BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring-config.xml"); UserDao userDao=(UserDao)beanFactory.getBean("userDAO"); UserEntity userEntity = userDao.queryAllUser().get(0); session.setAttribute("user",userEntity);%><h2>Hello World!</h2>${user.name}</body></html>
运行结果
spring是面向接口编程的,你看到要写一个接口UserDAO,而不是直接写代码
Spring整合Hibernate也很简单就是,把sessionFactory的创建交给Spring的IOC容器创建,其实简单可见的就是,在spring配置文件的beans下加多一个id为sessionFactory的bean节点,这就是操作重点了。
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 DAO.UserDao;import com.opensymphony.xwork2.ActionSupport;/** * Created by hui on 2017/6/12. */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="userDAO"></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与Hibernate整合
spring整合Strut2的操作我并没有查询数据库验证用户
下面改一下LoginAction代码:
@Override public String execute() throws Exception { String forword = null; UserEntity userEntity =new UserEntity(); userEntity.setName(username); userEntity.setPwd(pwd); UserEntity entity = userDao.checkUser(userEntity); System.out.println(entity.toString()); if (entity!=null) { ActionContext.getContext().put("user",entity); forword = ActionSupport.SUCCESS; } else { 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> <!--解决session关闭而导致的延迟加载例外的问题--> <filter> <filter-name>lazyLoadingFilter</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>lazyLoadingFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
码云SS2HDemo案例源码
- interlij idea创建给Web项目添加SS2H
- interlij idea创建给Web项目添加Hibernate
- interlij idea创建给Web项目添加struts2
- interlij idea创建给Web项目添加Mybatis
- interlij idea创建给Web项目添加SS2M
- interlij idea创建给Web项目添加Mybatis
- interlij idea给Web项目添加SSM
- interlij idea给Web项目添加SSM(零配置文件
- IDEA 创建web项目
- idea创建web项目
- IDEA创建WEB项目
- Idea创建web项目
- idea创建web项目
- IntelliJ IDEA创建Web SpringMVC项目(二):添加springMVC框架
- IntelliJ IDEA创建Web SpringMVC项目(二):添加springMVC框架
- 利用Idea创建web项目
- idea 创建maven web 项目
- idea 创建一个web项目
- android TextView文字跟随seekBar滑动条滑块的位置移动
- ProgressCtrlST位图进度条控件类
- 动态内存与智能指针及其实现
- Android 代码混淆、过滤与警告处理
- Python基础-@property
- interlij idea创建给Web项目添加SS2H
- C#连接SQL Server并查询数据
- 【LeetCode】 Majority Element 系列
- Qt5.8 图像铺满
- 物理层
- 如何用DOS命令查看电脑内存
- linux下matlab2014卸载
- Redis 事务和Pipeline--JAVA(系列文章三)
- Spring Boot集成Spring Data Jpa