Idea+maven SSH(struts 2+hibenate 5+spring 5)환경 구축 방법 절차
이번 프로젝트 에서 저 는 간단 한 로그 인 사례 로 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 를 구축 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows에서 CodeArtifact(Maven)용 토큰을 자동으로 생성하는 방법CodeArtifact를 사용한 적이 있거나 사용할 계획이라면 매일 모든 Maven 프로젝트에서 수동으로 토큰(CODEARTIFACT_AUTH_TOKEN)을 생성해야 합니다. 이는 어려울 수 있으며 개발 속도를 늦출...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.