Maven搭建SSH框架
工具:Eclipse(Maven管理工具)+Tomcat+Mysql。
1.新建一个Maven工程(maven-archetype-webapp)。
打开File ——>new——>Maven Project,直接next,选择(maven-archetype-webapp).接着输入Grouid和ArtifactId,点击finish等待生成项目即可。
2.修改pom.xml文件,我这里的依赖是网上找的。保存后会自动下载jar包在你的repository文件夹中(这里要保证连网)。
- <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.gh</groupId>
- <artifactId>SSH1</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>SSH1 Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <properties>
- <!-- 统一源码的编码方式 -->
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <!-- 统一各个框架版本 -->
- <struts.version>2.5.10</struts.version>
- <spring.version>4.3.8.RELEASE</spring.version>
- <hibernate.version>4.2.4.Final</hibernate.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <!-- Spring 核心依赖 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- Spring web依赖 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- Spring整合ORM框架依赖 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- Struts2 核心依赖 -->
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>${struts.version}</version>
- </dependency>
- <!-- Struts2和Spring整合依赖 -->
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- <version>${struts.version}</version>
- </dependency>
- <!-- Hibernate 核心依赖 -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>${hibernate.version}</version>
- </dependency>
- <!-- MySQL 依赖 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.42</version>
- </dependency>
- <!-- C3P0 依赖 -->
- <dependency>
- <groupId>com.mchange</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.5</version>
- </dependency>
- <!-- AspectJ依赖 -->
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.8.10</version>
- </dependency>
- <!-- SLF4J依赖 -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.25</version>
- </dependency>
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- <version>1.4</version>
- </dependency>
- <dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- <version>1.6</version>
- </dependency>
- <dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-spec</artifactId>
- <version>1.2.5</version>
- </dependency>
- <dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-impl</artifactId>
- <version>1.2.5</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>SSH1</finalName>
- <!-- 统一源代码编译输出的JDK版本 -->
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.5.1</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- </configuration>
- </plugin>
- <!-- 打包时跳过单元测试 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.19.1</version>
- <configuration>
- <skipTests>true</skipTests>
- </configuration>
- </plugin>
- <!-- 集成Tomcat插件 -->
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <path>/${project.artifactId}</path>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
3.修改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" id="WebApp_ID" version="3.0">
- <display-name>ssh</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <!-- 配置Struts2过滤器 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 配置Spring的监听器 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 指定Spring配置文件所在路径 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml</param-value>
- </context-param>
- </web-app>
4.添加struts.xml文件和applicationcontext.xml文件在src目录下。
struts.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
- "http://struts.apache.org/dtds/struts-2.1.dtd"><!-- 注意版本 -->
- <struts>
- <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
- <package name="user" namespace="/user" extends="struts-default">
- <action name="UserAction" class="action.UserAction" method="toLogin">
- <result name="success">/index2.jsp</result>
- <result name="error">/error.jsp</result>
- </action>
- </package>
- </struts>
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:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-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/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" default-autowire="byName">
- <context:annotation-config />
- <!-- spring 扫描路径,注意当前工程只需要扫描dao和service,srpingmvc或者struts2注解才有变化 -->
- <context:component-scan base-package="dao,service" />
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName"
- value="com.mysql.jdbc.Driver">
- </property>
- <property name="url"
- value="jdbc:mysql://127.0.0.1:3306/young">
- </property>
- <property name="username" value="root"></property>
- <property name="password" value="root"></property>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource">
- <ref bean="dataSource" />
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">
- org.hibernate.dialect.MySQLDialect
- </prop>
- <prop key="hibernate.show_sql">
- true
- </prop>
- </props>
- </property>
- <property name="mappingDirectoryLocations">
- <list>
- <value>classpath:entity/</value>
- </list>
- </property>
- </bean>
- <!-- 配置声明式事务管理(采用注解的方式) -->
- <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- 开启注解事务 -->
- <tx:annotation-driven transaction-manager="txManager"/>
- </beans>
5.新建实体,动作类和接口等。结构如下图。
UserAction.java
- package action;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import com.opensymphony.xwork2.ActionSupport;
- import entity.User;
- import service.UserService;
- @Controller
- public class UserAction extends ActionSupport{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- @Autowired
- private UserService userService;//�Զ�ע��
- public String toLogin(){
- List<User>list=userService.findAll();
- for (User user : list) {
- System.out.println(user.getUserName());
- }
- return "success";
- }
- }
BaseDao.java
- package common;
- import java.util.List;
- public interface BaseDao<T> {
- public List<T> findAll();
- public int insert(T t);
- public int update (T t,int id);
- public int delete(int id);
- public T findById(int id);
- }
BaseService.java
- package common;
- import java.util.List;
- public interface BaseService <T>{
- public List<T> findAll();
- public boolean insert(T t);
- public boolean update (T t,int id);
- public boolean delete(int id);
- public T findById(int id);
- }
UserDao.java
- package dao;
- import common.BaseDao;
- import entity.User;
- public interface UserDao extends BaseDao<User>{
- }
UserDaoimpl.java
- package dao.impl;
- import java.util.List;
- import org.hibernate.Query;
- import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
- import org.springframework.stereotype.Repository;
- import dao.UserDao;
- import entity.User;
- @Repository
- public class UserDaoimpl extends HibernateDaoSupport implements UserDao {
- public List<User> findAll() {
- // TODO Auto-generated method stub
- String sql="select * from user";
- Query query=getSessionFactory().openSession().createSQLQuery(sql).addEntity(User.class);
- List<User> list=query.list();
- return list ;
- }
- public int insert(User t) {
- // TODO Auto-generated method stub
- return 0;
- }
- public int update(User t, int id) {
- // TODO Auto-generated method stub
- return 0;
- }
- public int delete(int id) {
- // TODO Auto-generated method stub
- return 0;
- }
- public User findById(int id) {
- // TODO Auto-generated method stub
- return null;
- }
- }
UserService.java
- package service;
- import common.BaseDao;
- import entity.User;
- public interface UserService extends BaseDao<User>{
- }
UserServiceimpl.java
- package service.impl;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import dao.UserDao;
- import entity.User;
- import service.UserService;
- @Transactional
- @Service
- public class UserServiceimpl implements UserService{
- @Autowired
- private UserDao userdao;
- public List<User> findAll() {
- // TODO Auto-generated method stub
- return userdao.findAll();
- }
- public int insert(User t) {
- // TODO Auto-generated method stub
- return 0;
- }
- public int update(User t, int id) {
- // TODO Auto-generated method stub
- return 0;
- }
- public int delete(int id) {
- // TODO Auto-generated method stub
- return 0;
- }
- public User findById(int id) {
- // TODO Auto-generated method stub
- return null;
- }
- }
User.java
- package entity;
- // Generated 2018-3-29 10:41:32 by Hibernate Tools 3.4.0.CR1
- /**
- * User generated by hbm2java
- */
- public class User implements java.io.Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private Integer userid;
- private String userName;
- private String pwd;
- public User() {
- }
- public User(String userName, String pwd) {
- this.userName = userName;
- this.pwd = pwd;
- }
- public Integer getUserid() {
- return this.userid;
- }
- public void setUserid(Integer userid) {
- this.userid = userid;
- }
- public String getUserName() {
- return this.userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPwd() {
- return this.pwd;
- }
- public void setPwd(String pwd) {
- this.pwd = pwd;
- }
- }
User.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!-- Generated 2018-3-29 10:41:32 by Hibernate Tools 3.4.0.CR1 -->
- <hibernate-mapping>
- <class name="entity.User" table="user" catalog="young">
- <id name="userid" type="java.lang.Integer">
- <column name="userid" />
- <generator class="identity" />
- </id>
- <property name="userName" type="string">
- <column name="userName" length="10" />
- </property>
- <property name="pwd" type="string">
- <column name="pwd" length="10" />
- </property>
- </class>
- </hibernate-mapping>
jsp代码
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Insert title here</title>
- </head>
- <body>
- <form action="${ctx}/user/UserAction!toLogin.action" method="post">
- 用户名:<input type="text" name="username" id="username" value=""/>
- 密码:<input type="password" name="user.password" id="password" value=""/>
- <input type="submit" value="登录">
- </form>
- </body>
- </html>
最后部署项目下tomcat中,运行console输出如下:
总结:在这过程中遇到了不少问题。一般都是包的问题和版本问题。
1.在搭建框架运行不报错后,准备去请求数据时,却一直找不到动作类。在跳转时jsp页面一直报如下错。
解决办法:参考博客:https://blog.csdn.net/axwolfer/article/details/40164151
在struts.xml中添加如下代码:
- <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
2.Hibernate版本问题,Hibernate升级后有了不少变化,具体网上看。之前一直用Hibernate3,在搭建开始时我用的是Hibernate5,后来改成了Hibernate4。
使用5时请求数据库时报如下错:
Could not open Hibernate Session for transaction; nested exception is java.lang.NoClassDefFoundError: org/hibernate/engine/transaction/spi/TransactionContext。
解决办法:将Hibernate中的依赖改成Hibernate4版本的即可。
Maven搭建SSH框架的更多相关文章
- 使用maven搭建ssh框架
首先搭建sturts2框架,配置pom文件: <properties> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding&g ...
- 使用maven搭建SSH框架实现登陆、列表查询分页
SSH框架:struts2 + spring + hibernate web层:struts2+jsp service层:javaBean dao层:hibernate spring:管理Action ...
- Maven环境下搭建SSH框架
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Maven:3.3.9 Struts2:2.5.10 Spring:4.3.8.RELEASE Hibernate:5.1.7.Fina ...
- Maven环境下搭建SSH框架之Spring整合Hibernate
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...
- myeclipse搭建SSH框架
搭建SSH框架 Struts+hibernater+spring架构(myeclipse) 右击,首先加入spring,加入hibernater,再加入struts2 复制jar包(把tomcat发布 ...
- MyEclipse8.5快速搭建SSH框架
来源于:http://jingyan.baidu.com/article/a378c960a78125b3282830cc.html MyEclipse8.5快速搭建SSH框架 使用版本: Strut ...
- [JavaEE] SSH框架笔记_eclipse搭建SSH框架详解
SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作. 下载好eclipse,Struts2,Spring,Hibe ...
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
随机推荐
- jmeter学习笔记--概述
jmeter:概述 是什么? jmeter是Apache 公司使用java开发的一款测试工具 为什么? 高效.功能强大 模拟一些高并发或多次循环等特殊场景 怎么用? 1.下载jmeter,解压缩 2. ...
- 基于django的博客系统
这是前段代码 达到的效果并不是太好,但我还是要发出来,有更好的建议可以和我讨论 后台还算可以 添加了分类和文章两个功能,还在优化,敬请期待....
- Java框架spring 学习笔记(十九):事务管理(注解管理)
注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 <?xml version="1.0" encoding="UTF-8"?> ...
- Apache Flink 数据流编程模型
抽象等级(Levels of Abstraction) Flink提供不同级别的抽象来开发流/批处理应用程序. Statefule Stream Processing: 是最低级别(底层)的抽象,只提 ...
- Python学习—数据库篇之pymysql
一.pymysql简介 对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql是Python中操作MySQL的模块,其使用方法和MySQ ...
- 《Orange‘s》 Bochs环境配置
安装配置bochs之前先写一个简单的引导扇区用来测试: org 07c00h mov ax,cs mov ds,ax mov es,ax call DispStr jmp $ DispStr: mov ...
- mysql mycat 中间件安装与使用
一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...
- vue响应式原理
vue的响应式,数据模型仅仅是普通的Javascript对象.当你修改它们时,视图会进行更新 那么如何追踪变化: 当把普通的js对象传给vue实例的data选项,Vue将遍历此对象的所有属性,并使用O ...
- 关于AVL树的思考
AVL树即平衡二叉树,每个结点有一个平衡因子,即左子树高度减去右子树高.每插入一个结点时,从根部开始按二叉排序树的方法,与节点不断比较,按大小向左右子树插入.在与最后的节点比较后插入时,若有兄弟节点, ...
- Juniper BGP配置
网络拓扑如下: XRV1配置 =========================================================== root@XRV1# run show confi ...