Idea+maven SSH(struts 2+hibenate 5+spring 5)환경 구축 방법 절차

21765 단어 IdeamavenSSH
최근 에는 SSH 를 이용 해 기 말 고사 임 무 를 작성 해 야 하 는데,그 전에 도 인터넷 에서 오랫동안 찾 아 봤 고,많은 문 제 를 시도 해 봤 습 니 다.많은 선배 님 들 의 정리 에 감 사 드 립 니 다.저도 쓸 만 한 내용 을 많이 알 아 냈 습 니 다.
이번 프로젝트 에서 저 는 간단 한 로그 인 사례 로 SSH 의 프로젝트 통합 을 실현 할 것 입 니 다.프로젝트 는 Github 위 에 놓 을 것 입 니 다.필요 한 친구 들 은 clone 에서 내 려 와 서 현지에서 뛰 어 다 닐 수 있 습 니 다.
프로젝트 주소:SSH 비계
1.프로젝트 환경 구축
Maven 을 사용 하여 자바 웹 프로젝트 를 만 듭 니 다.

1.1 스프링 좌표 의존 설정
Spring 좌표 의존 도입

<!-- spring-context -->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.1.0.RELEASE</version>
 </dependency>
 <!-- spring-web -->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>5.1.0.RELEASE</version>
 </dependency>
 <!--spring-jdbc -->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.1.0.RELEASE</version>
 </dependency>
 <!-- spring-orm -->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-orm</artifactId>
  <version>5.1.0.RELEASE</version>
 </dependency>
 <!-- aop       jar  -->
 <!-- aspectjrt -->
 <dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>1.9.1</version>
 </dependency>
 <!-- aspectjweaver -->
 <dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.9.1</version>
 </dependency>
1.2 hibenate 좌표 의존 설정
우리 의 목 표 는 SSH 를 통합 하 는 것 이기 때문에 hibenate 의 핵심 의존,my sql 데이터베이스 구동,그리고 c3p 0 데이터베이스 연결 탱크 가 필요 합 니 다.

<!-- hibernate     -->
 <dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.2.17.Final</version>
 </dependency>
 <!-- mysql        -->
 <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.47</version>
 </dependency>
  <!-- c3p0    -->
 <dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.2</version>
 </dependency>
1.3 struts 2 좌표 의존 설정
struts 핵심 및 struts 통합 spring 플러그 인 및 struts 가 json 데이터 처리 플러그 인 이 필요 합 니 다.

 <!-- struts2 -->
 <dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.3.35</version>
 </dependency>
 <!-- struts2-spring-plugin  spring struts2 -->
 <dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-spring-plugin</artifactId>
  <version>2.3.35</version>
 </dependency>
 <!-- json     ,struts    -->
 <dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-json-plugin</artifactId>
  <version>2.3.8</version>
 </dependency>
1.4 Java EE 좌표 의존 설정
servlet api,jstl 태그 라 이브 러 리 등 일련의 도 구 를 도입 할 수 있 습 니 다.

<!-- servlet api -->
 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
 </dependency>
 <dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>javax.servlet.jsp-api</artifactId>
  <version>2.3.1</version>
  <scope>provided</scope>
 </dependency>
 <!-- lombok     ,    getter   setter   ,        idea             ,    -->
 <dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.0</version>
  <scope>provided</scope>
 </dependency>
 <!-- jstl -->
 <dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
 </dependency>
 <dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
 </dependency>
1.5 기타 도구
json 처리 도구

 <dependency>
   <groupId>org.jetbrains</groupId>
   <artifactId>annotations-java5</artifactId>
   <version>RELEASE</version>
   <scope>compile</scope>
  </dependency>
 <!--      json  ,      ,             -->
 <dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20160810</version>
 </dependency>
2.프로젝트 구조 구축
2.1 프로필
다음 방법 으로 만 들 기

1.applicationContext.xml
2.jdbc.properties
3.struts.xml
2.2 패키지 구조
다음 과 같은 기본 패키지 구 조 를 만 듭 니 다.

3.프로필 작성
3.1 웹.xml 파일 설정

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <display-name>Archetype Created Web Application</display-name>

 <context-param>
 <param-name>contextConfigLocation</param-name>
 <!-- Spring      -->
 <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <!-- 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>
 <!--        -->
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
</web-app>
3.2 jdbc.properties 파일 작성
여기 서 우 리 는 데이터베이스 의 정보 설정 을 수 동 으로 수정 해 야 한다.

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf-8&autoReconnect=true&useSSL=false
jdbc.user=root
jdbc.password=root
#            
jdbc.minPoolSize=1
#            
jdbc.maxPoolSize=20
#      
jdbc.initialPoolSize=1
3.3 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:tx="http://www.springframework.org/schema/tx"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd 
  http://www.springframework.org/schema/tx 
  http://www.springframework.org/schema/tx/spring-tx.xsd 
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context.xsd">
 
 <!--        -->
 <context:property-placeholder location="classpath:jdbc.properties"/>
 <!--        bean-->
 <context:component-scan base-package="dao.*,service.*"/>
 <context:component-scan base-package="action"/>
 <!--       -->
 <context:annotation-config/>
 <!--        -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="${jdbc.driverClass}"/>
  <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
  <property name="user" value="${jdbc.user}"/>
  <property name="password" value="${jdbc.password}"/>
  <property name="minPoolSize" value="${jdbc.minPoolSize}"/>
  <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
  <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
 </bean>
 <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="hibernateProperties">
   <props>
    <!--  Hibernate   -->
    <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
    </prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
    <prop key="hibernate.current_session_context_class">thread</prop>
    <!--     sql  -->
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">true</prop>
    <prop key="hibernate.use_sql_comments">false</prop>
   </props>
  </property>
  <!--        -->
  <property name="packagesToScan" value="entity" />
 </bean>
 <!--    HibernateTemplate    -->

 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
  <!--    SessionFactory    -->
  <property name="sessionFactory" ref="sessionFactory"/>
 </bean>

 <!--            -->
 <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"/>
 </bean>
 <tx:annotation-driven transaction-manager="txManager"/>
</beans>
3.4 struts 프로필
저희 가 아직 작성 하지 않 은 구체 적 인 action 서비스 이기 때문에 여기 서 먼저 건 너 뛰 겠 습 니 다.
4.hibenate 역방향 생 성 도구 로 실체 생 성
4.1 데이터베이스 연결 정보 설정
아이디어 자체 데이터베이스 연결 도구 사용 하기

기본 설정 정보 보완

4.2 역방향 생 성 실체 클래스



4.3 실체 클래스 설정
생 성 된 후에 데이터 베이스 와 대응 하 는 실체 류 를 볼 수 있 습 니 다.제 시 계 는 간단 합 니 다.간단 한 사용자 표 는 id,username,password 필드 만 있 습 니 다.

그러나 우 리 는 안의 일부 내용 이 폭발 할 것 이라는 것 을 발견 했다.이것 은 우리 가 데이터 소스 를 지정 하지 않 았 기 때문이다.

방금 연 결 된 데이터 베 이 스 를 선택 하 십시오.

그리고 괜찮아 요.
5.JavaBean 작성
가방 구 조 를 보면 제 가 사용 하 는 전형 적 인 MVC 3 층 구조 로 작 성 된 것 을 알 수 있 을 것 입 니 다.
5.1 작성 dao 층
UserDao 및 구현 클래스 만 들 기 UserDaoImpl

UserDao 작성

package dao;

import entity.User;

public interface UserDao {

 //       
 public User selectByUsernameAndPassword(String username, String password);
}
UserDaoImpl

package dao.Impl;

import dao.UserDao;
import entity.User;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

//    Spring            
@Repository
public class UserDaoImpl implements UserDao {

 //    Hibernate      
 @Autowired
 @Resource
 private HibernateTemplate hibernateTemplate;

 //       get   set   
 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }

 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }

 @Override
 public User selectByUsernameAndPassword(String username, String password) {
  //         ,     sql     ,username   password           ,       hibernate   ,     hql   
  Session session = hibernateTemplate.getSessionFactory().openSession();
  Query q = session.createQuery("from User u where u.username = ? and u.password = ?");
  q.setParameter(0,username);
  q.setParameter(1,password);
  User u = (User) q.uniqueResult();
  return u;
 }
}
우 리 는 dao 층 을 썼 는데 이때 폭발 적 인 문제 가 발생 한 것 을 발 견 했 습 니 다.여기 서 우 리 는 수 동 으로 프로젝트 의 의존 정 보 를 추가 해 야 합 니 다.

클릭 project structure


이것 만 추가 하면 됩 니 다.문 제 는 해 결 됩 니 다.

정상 으로 나 왔 습 니 다.

5.2 서비스 계층 작성
마찬가지 로 저 희 는 해당 하 는 UserService 와 해당 하 는 UserServiceImpl 류 를 만 듭 니 다.
어떤 학생 들 은 간단 한 로그 인 기능 이 잖 아 요.이렇게 귀 찮 게 할 필요 가 있 나 요?라 고 물 을 수도 있 습 니 다.네,이렇게 할 필 요 는 없 지만 프로젝트 가 점점 커지 면서 구체 적 인 기능 을 모두 분리 해서 해 야 전체 프로젝트 가 너무 복잡 하지 않 습 니 다.
사용자 의 비 즈 니스 계층 인터페이스 UserService 작성

package service;

import entity.User;

public interface UserService {
 //     
 User checklogin(String username, String password);
}
비 즈 니스 계층 에 대응 하 는 구현 클래스 UserServiceImpl 작성

package service.Impl;

import dao.UserDao;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.UserService;

@Service
public class UserServiceImpl implements UserService {
 
 //              
 @Autowired
 private UserDao ud;
 
 @Override
 public User checklogin(String username, String password) {
  return ud.selectByUsernameAndPassword(username,password);
 }
}
5.3 컨트롤 러 계층 작성(UserAction)
여기 서 의 논리 적 사 고 는 controller 층 이 service 를 호출 하 는 방법 이 고 service 층 이 dao 층 을 호출 하 는 방법 입 니 다.

package action;

import com.opensymphony.xwork2.ActionContext;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import service.UserService;

import java.util.Map;

//    Controller        ,   ua        Spring    
@Controller("ua")
public class UserAction {
 //       ,   struts2   ognl                   ,     request.getParameter("xxxx")      
 private String username;
 private String password;

 //         
 @Autowired
 private UserService us;

 // get       , set      ,              
 public String getUsername() {
  return username;
 }

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

 public String getPassword() {
  return password;
 }

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

 //          
 public String login() {
  System.out.println(username + " " + password); //         
  ActionContext ac = ActionContext.getContext();
  //    servlet        session  ,             session,      
  Map<String,Object> session = ac.getSession(); //        session         map
  User user = us.checklogin(username,password); //     
  if ( user!=null ) {
   session.put("user",username);
   return "success";
  } else {
   return "error";
  }
 }
}
5.4 struts 루트 맵 작성
Project Structure 에 다음 설정 을 추가 하 는 것 을 기억 하 십시오.

stucts 액 션 설정

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

 <package name="user" namespace="/" extends="struts-default">
  <action name="checklogin" class="ua" method="login">
  	<!--           -->
   <result name="success" type="redirect">/index.jsp</result>
   <!--             -->
   <result name="error" type="redirect">/error.jsp</result>
  </action>
 </package>
</struts>
6.전단 인터페이스 작성
6.1 로그 인 인터페이스 작성

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:18
 Contact: [email protected]
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Title</title>
</head>
<body>
 <form action="checklogin" method="post">
  <label for="username">  :</label>
  <input type="text" name="username" id="username"><br>
  <label for="password">  :</label>
  <input type="password" name="password" id="password"><br>
  <input type="submit" value="  ">
 </form>

</body>
</html>

6.1 로그 인 성공

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:21
 Contact: [email protected]
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
 <title>Title</title>
</head>
<body>
 <h3>    ${sessionScope.user}   !!</h3>
</body>
</html>


6.3 로그 인 실패

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:21
 Contact: [email protected]
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Title</title>
</head>
<body>
 <h2>   !!!</h2>
</body>
</html>


Idea+maven 이 SSH(struts 2+hibenate 5+spring 5)환경 을 구축 하 는 방법 과 절차 에 관 한 글 을 소개 합 니 다.더 많은 Idea+maven 이 SSH 를 구축 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기