使用IDEA搭建SSH项目

雨点打透心脏的1/2处 2022-04-11 04:40 622阅读 0赞

三层架构如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70

pom.xml文件导入相应jar包:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <modelVersion>4.0.0</modelVersion>
  4. <packaging>war</packaging>
  5. <name>studentMsg</name>
  6. <groupId>com.accp</groupId>
  7. <artifactId>studentMsg</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <properties>
  10. <hibernate-version>4.1.12.Final</hibernate-version>
  11. <struts.version>2.1.6</struts.version>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.aspectj</groupId>
  16. <artifactId>aspectjweaver</artifactId>
  17. <version>1.8.8</version>
  18. </dependency>
  19. <!--hibernate的jar包-->
  20. <dependency>
  21. <groupId>org.hibernate</groupId>
  22. <artifactId>hibernate-core</artifactId>
  23. <version>${hibernate-version}</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.hibernate.common</groupId>
  27. <artifactId>hibernate-commons-annotations</artifactId>
  28. <version>4.0.5.Final</version>
  29. </dependency>
  30. <!-- struts2-core的jar包 -->
  31. <dependency>
  32. <groupId>org.apache.struts</groupId>
  33. <artifactId>struts2-core</artifactId>
  34. <version>${struts.version}</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.apache.struts.xwork</groupId>
  38. <artifactId>xwork-core</artifactId>
  39. <version>2.3.34</version>
  40. </dependency>
  41. <!-- oracle 的jar包 -->
  42. <dependency>
  43. <groupId>com.oracle</groupId>
  44. <artifactId>ojdbc6</artifactId>
  45. <version>11.2.0.1.0</version>
  46. </dependency>
  47. <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  48. <dependency>
  49. <groupId>javax.servlet</groupId>
  50. <artifactId>javax.servlet-api</artifactId>
  51. <version>3.0.1</version>
  52. <scope>provided</scope>
  53. </dependency>
  54. <dependency>
  55. <groupId>javax.servlet</groupId>
  56. <artifactId>jstl</artifactId>
  57. <version>1.2</version>
  58. </dependency>
  59. </dependencies>
  60. </project>

连接数据库(我用的是Oracle):

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 2

数据访问层学生实体类代码:

  1. package com.accp.entity;
  2. public class Student {
  3. private Integer id;
  4. private String name;
  5. private Integer age;
  6. private String gender;
  7. private String telephone;
  8. private String email;
  9. //private Integer classid;
  10. private Classes classes;//班级外键
  11. public Integer getId() {
  12. return id;
  13. }
  14. public void setId(Integer id) {
  15. this.id = id;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public Integer getAge() {
  24. return age;
  25. }
  26. public void setAge(Integer age) {
  27. this.age = age;
  28. }
  29. public String getGender() {
  30. return gender;
  31. }
  32. public void setGender(String gender) {
  33. this.gender = gender;
  34. }
  35. public String getTelephone() {
  36. return telephone;
  37. }
  38. public void setTelephone(String telephone) {
  39. this.telephone = telephone;
  40. }
  41. public String getEmail() {
  42. return email;
  43. }
  44. public void setEmail(String email) {
  45. this.email = email;
  46. }
  47. public Classes getClasses() {
  48. return classes;
  49. }
  50. public void setClasses(Classes classes) {
  51. this.classes = classes;
  52. }
  53. }

数据访问层班级实体类:

  1. package com.accp.entity;
  2. public class Classes {
  3. private Integer id;
  4. private String name;
  5. public Integer getId() {
  6. return id;
  7. }
  8. public void setId(Integer id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. }

会话工厂代码:

  1. package com.accp.util;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. public class HibernateUtil {
  6. private static SessionFactory sessionFactory ;
  7. static {
  8. Configuration conf = new Configuration().configure("hibernate.cfg.xml");
  9. sessionFactory = conf.buildSessionFactory();
  10. }
  11. public static Session openSession(){
  12. return sessionFactory.getCurrentSession();
  13. }
  14. }

过滤器代码:

  1. package com.accp.util;
  2. import org.hibernate.Session;
  3. import org.hibernate.Transaction;
  4. import javax.servlet.*;
  5. import java.io.IOException;
  6. public class MyFilter implements Filter {
  7. public void init(FilterConfig filterConfig) throws ServletException {
  8. }
  9. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  10. request.setCharacterEncoding("utf-8");
  11. response.setCharacterEncoding("utf-8");
  12. response.setContentType("text/html; charset=UTF-8");
  13. Session session = HibernateUtil.openSession();
  14. Transaction transaction = session.beginTransaction();
  15. try {
  16. chain.doFilter(request,response);
  17. transaction.commit();
  18. }catch (Exception e){
  19. transaction.rollback();
  20. }
  21. }
  22. public void destroy() {
  23. }
  24. }

学生Dao层代码:

  1. package com.accp.dao;
  2. import com.accp.entity.Student;
  3. import java.io.Serializable;
  4. import java.util.List;
  5. public interface StudentDao {
  6. List<Student> queryStudent(Student student);
  7. Serializable addStudent(Student student);
  8. }

学生DaoImpl实现代码

  1. package com.accp.dao.impl;
  2. import com.accp.dao.StudentDao;
  3. import com.accp.entity.Student;
  4. import com.accp.util.HibernateUtil;
  5. import org.hibernate.Criteria;
  6. import org.hibernate.Session;
  7. import java.io.Serializable;
  8. import java.util.List;
  9. public class StudentDaoImpl implements StudentDao {
  10. public List<Student> queryStudent(Student student) {
  11. Session session = HibernateUtil.openSession();
  12. Criteria criteria = session.createCriteria(Student.class);
  13. return criteria.list();
  14. }
  15. public Serializable addStudent(Student student) {
  16. Session session = HibernateUtil.openSession();
  17. Serializable save = session.save(student);
  18. return save;
  19. }
  20. }

班级Dao层代码:

  1. package com.accp.dao;
  2. import com.accp.entity.Classes;
  3. import java.util.List;
  4. public interface ClassesDao {
  5. List<Classes> queryClasses(Classes classes);
  6. }

班级DaoImpl实现代码

  1. package com.accp.dao.impl;
  2. import com.accp.dao.ClassesDao;
  3. import com.accp.entity.Classes;
  4. import com.accp.util.HibernateUtil;
  5. import org.hibernate.Criteria;
  6. import org.hibernate.Session;
  7. import java.util.List;
  8. public class ClassesDaoImpl implements ClassesDao {
  9. public List<Classes> queryClasses(Classes classes) {
  10. Session session = HibernateUtil.openSession();
  11. Criteria criteria = session.createCriteria(Classes.class);
  12. return criteria.list();
  13. }
  14. }

学生业务逻辑层代码:

  1. package com.accp.service;
  2. import com.accp.entity.Student;
  3. import java.io.Serializable;
  4. import java.util.List;
  5. public interface StudentService {
  6. List<Student> queryStudent(Student student);
  7. boolean addStudent(Student student);
  8. }

学生业务逻辑层实现代码:

  1. package com.accp.service.impl;
  2. import com.accp.dao.StudentDao;
  3. import com.accp.dao.impl.StudentDaoImpl;
  4. import com.accp.entity.Student;
  5. import com.accp.service.StudentService;
  6. import java.util.List;
  7. public class StudentServiceImpl implements StudentService {
  8. private StudentDao studentDao = new StudentDaoImpl();
  9. public List<Student> queryStudent(Student student) {
  10. return studentDao.queryStudent(student);
  11. }
  12. public boolean addStudent(Student student) {
  13. if(studentDao.addStudent(student)!=null){
  14. return true;
  15. }
  16. return false;
  17. }
  18. }

班级业务逻辑层代码:

  1. package com.accp.service;
  2. import com.accp.entity.Classes;
  3. import java.util.List;
  4. public interface ClassesService {
  5. List<Classes> queryClasses(Classes classes);
  6. }

班级业务逻辑层实现代码:

  1. package com.accp.service.impl;
  2. import com.accp.dao.ClassesDao;
  3. import com.accp.dao.impl.ClassesDaoImpl;
  4. import com.accp.entity.Classes;
  5. import com.accp.service.ClassesService;
  6. import java.util.List;
  7. public class ClassesServiceImpl implements ClassesService {
  8. private ClassesDao classesDao = new ClassesDaoImpl();
  9. public List<Classes> queryClasses(Classes classes) {
  10. return classesDao.queryClasses(classes);
  11. }
  12. }

学生hibernate的映射配置文件(Student.hbm.xml)代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="com.accp.entity">
  6. <class name="Student">
  7. <id name="id">
  8. <generator class="sequence">
  9. <param name="sequence">seq_student_id</param>
  10. </generator>
  11. </id>
  12. <property name="name"/>
  13. <property name="age"/>
  14. <property name="gender"/>
  15. <property name="telephone"/>
  16. <property name="email"/>
  17. <many-to-one name="classes" column="classid" class="Classes"/>
  18. </class>
  19. </hibernate-mapping>

班级hibernate的映射配置文件(Classes.hbm.xml)代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="com.accp.entity">
  6. <class name="Classes">
  7. <id name="id">
  8. <generator class="sequence">
  9. <param name="sequence">seq_classes_id</param>
  10. </generator>
  11. </id>
  12. <property name="name"/>
  13. </class>
  14. </hibernate-mapping>

连接数据库配置文件(hibernate.cfg.xml)代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
  8. <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
  9. <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  10. <property name="connection.username">scott</property>
  11. <property name="connection.password">orcl</property>
  12. <property name="show_sql">true</property>
  13. <property name="current_session_context_class">thread</property>
  14. //映射文件
  15. <mapping resource="xml/Classes.hbm.xml"/>
  16. <mapping resource="xml/Student.hbm.xml"/>
  17. </session-factory>
  18. </hibernate-configuration>

struts.xml配置代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <constant name="struts.ui.theme" value="simple" />
  7. <package name="web" extends="struts-default">
  8. <action name="sClasses" class="com.accp.action.ClassesAction" method="queryClass">
  9. <result name="success">add.jsp</result>
  10. </action>
  11. <action name="add" class="com.accp.action.StudentAction" method="addStudent">
  12. <result name="success" type="redirectAction">sStudent.action</result>
  13. <result name="input" type="redirectAction">sClasses.action</result>
  14. </action>
  15. <action name="sStudent" class="com.accp.action.StudentAction" method="queryStudent">
  16. <result name="success">show.jsp</result>
  17. </action>
  18. </package>
  19. </struts>

web.xml配置代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6. <filter>
  7. <filter-name>openSessionInView</filter-name>
  8. <filter-class>com.accp.util.MyFilter</filter-class>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>openSessionInView</filter-name>
  12. <url-pattern>*.action</url-pattern>
  13. </filter-mapping>
  14. <filter>
  15. <filter-name>strut2</filter-name>
  16. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  17. </filter>
  18. <filter-mapping>
  19. <filter-name>strut2</filter-name>
  20. <url-pattern>/*</url-pattern>
  21. </filter-mapping>
  22. <welcome-file-list>
  23. <welcome-file>login.jsp</welcome-file>
  24. </welcome-file-list>
  25. </web-app>

控制层action学生代码:

  1. package com.accp.action;
  2. import com.accp.entity.Student;
  3. import com.accp.service.StudentService;
  4. import com.accp.service.impl.StudentServiceImpl;
  5. import com.opensymphony.xwork2.ActionSupport;
  6. import java.util.List;
  7. public class StudentAction extends ActionSupport {
  8. private Student student;
  9. private List<Student> studentList;
  10. private StudentService studentService = new StudentServiceImpl();
  11. public String queryStudent(){
  12. studentList = studentService.queryStudent(student);
  13. return SUCCESS;
  14. }
  15. public String addStudent(){
  16. if(studentService.addStudent(student)){
  17. return SUCCESS;
  18. }
  19. return INPUT;
  20. }
  21. public Student getStudent() {
  22. return student;
  23. }
  24. public void setStudent(Student student) {
  25. this.student = student;
  26. }
  27. public List<Student> getStudentList() {
  28. return studentList;
  29. }
  30. public void setStudentList(List<Student> studentList) {
  31. this.studentList = studentList;
  32. }
  33. }

控制层action班级代码:

  1. package com.accp.action;
  2. import com.accp.entity.Classes;
  3. import com.accp.service.ClassesService;
  4. import com.accp.service.impl.ClassesServiceImpl;
  5. import com.opensymphony.xwork2.ActionSupport;
  6. import java.util.List;
  7. public class ClassesAction extends ActionSupport {
  8. private Classes classes;
  9. private ClassesService classesService = new ClassesServiceImpl();
  10. private List<Classes> classesList;
  11. public String queryClass(){
  12. classesList = classesService.queryClasses(classes);
  13. return SUCCESS;
  14. }
  15. public Classes getClasses() {
  16. return classes;
  17. }
  18. public void setClasses(Classes classes) {
  19. this.classes = classes;
  20. }
  21. public List<Classes> getClassesList() {
  22. return classesList;
  23. }
  24. public void setClassesList(List<Classes> classesList) {
  25. this.classesList = classesList;
  26. }
  27. }

显示学生信息页面代码:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <table border="2px" width="100%" align="center">
  9. <h1 align="center">学员信息列表</h1>
  10. <tr align="right">
  11. <td><a href="sClasses.action">添加学员</a></td>
  12. </tr>
  13. <tr>
  14. <td>编号</td>
  15. <td>姓名</td>
  16. <td>性别</td>
  17. <td>年龄</td>
  18. <td>电话</td>
  19. <td>email</td>
  20. <td>班级</td>
  21. </tr>
  22. <s:iterator value="studentList">
  23. <tr>
  24. <td>${id}</td>
  25. <td>${name}</td>
  26. <td>${gender}</td>
  27. <td>${age}</td>
  28. <td>${telephone}</td>
  29. <td>${email}</td>
  30. <td>${classes.name}</td>
  31. </tr>
  32. </s:iterator>
  33. </table>
  34. </body>
  35. </html>

插入学生信息页面代码:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="add.action" method="post">
  9. <table border="2px" width="100%" align="center">
  10. <tr align="center">
  11. <td align="center">
  12. <s:label><h2>学员信息添加</h2></s:label>
  13. </td>
  14. </tr>
  15. <tr>
  16. <td>
  17. 姓名:<input type="text" name="student.name"/>
  18. </td>
  19. </tr>
  20. <tr>
  21. <td>
  22. 性别:<input type="text" name="student.gender"/>
  23. </td>
  24. </tr>
  25. <tr>
  26. <td>
  27. 年龄:<input type="text" name="student.age"/>
  28. </td>
  29. </tr>
  30. <tr>
  31. <td>
  32. 电话:<input type="text" name="student.telephone"/>
  33. </td>
  34. </tr>
  35. <tr>
  36. <td>
  37. email:<input type="text" name="student.email"/>
  38. </td>
  39. </tr>
  40. <tr>
  41. <td>
  42. 班级:<select name="student.classes.id">
  43. <option value="-1">请选择</option>
  44. <s:iterator value="classesList">
  45. <option value="${id}">${name}</option>
  46. </s:iterator>
  47. </select>
  48. </td>
  49. </tr>
  50. <tr>
  51. <td>
  52. <input type="submit" value="添加"/>
  53. <input type="button" value="返回" onclick="window.history.go(-1)">
  54. </td>
  55. </tr>
  56. </table>
  57. </form>
  58. </body>
  59. </html>

配置tomcat启动项目:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 3

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 4

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 5

运行项目:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 6

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 7

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5NTcwMA_size_16_color_FFFFFF_t_70 8

发表评论

表情:
评论列表 (有 0 条评论,622人围观)

还没有评论,来说两句吧...

相关阅读