zoukankan      html  css  js  c++  java
  • JavaEE---------SSH使用实例

    今天讲的是整合SSH框架,用一个图书信息小系统来实现,快速帮你构建网站后台

    首先我们应该把相应的Struts 2,Hibernate,Spring导入到你的工程中去,下面给出我用的库集合

    http://sdrv.ms/178GAJI

    把库添加到Build path中去,

    先改web.xml,它是整个web应用的核心,不要说不知道在哪里,指明使用Struts2 拦截请求,Spring监听

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <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>
      <!-- 指明spring配置文件在何处 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <!-- 加载spring配置文件applicationContext.xml -->
        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>    
      </web-app>

    在src目录下创建applicationContext.xml,在连接数据库的时候不要再创建hibernate.cfg.xml,直接用Spring提供的连接方法就好,要不然可能出错(本人经验)

    <?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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
    
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource">
                <ref bean="myDataSource" />
            </property>
            <property name="mappingResources">
                <list>
                    <value>com/bq/Book.hbm.xml</value>
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.MySQLDialect
                    </prop>
                    <prop key="hibernate.show_sql">true</prop>
                </props>
            </property>
        </bean>
        
        <bean id="myDataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver">
            </property>
            <property name="url"
                value="jdbc:mysql://127.0.0.1:3306/booksale?useUnicode=true&amp;characterEncoding=UTF-8">
            </property>
            <property name="username" value="root"></property>
            <property name="password" value=""></property>
        </bean>
        
        <bean id="userDao" class="com.bq.DAOImplement">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
    
        <bean id="service" class="com.bq.BookService">
            <property name="bookDao">
                <ref bean="userDao" />
            </property>
        </bean>
    
        <bean id="query" class="com.bq.QueryBook">
            <property name="service">
                <ref bean="service" />
            </property>
        </bean>
    
    </beans>

    创建Struts 2核心配置文件,不要喷我,我喜欢一个个类那样写,你也可以在一个类中指定不同的方法来处理不同的请求

    <?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="false" />
        <constant name="struts.devMode" value="true" />
        <constant name="struts.i18n.encoding" value="GB2312" />
        <package name="default" namespace="/" extends="struts-default">
        
            <action name="query" class="com.bq.QueryBook">
                <result name="success">/show.jsp</result>
                <result name="input">/index.jsp</result>
            </action>
            
            <action name="getBook" class="com.bq.GetBook">
                <result name="success">/book.jsp</result>
                <result name="input">/index.jsp</result>
            </action>
            
            <action name="changeBook" class="com.bq.ChangeBook">
                <result name="success" type="redirectAction">query</result>
                <result name="input">/book.jsp</result>
            </action>
            
            <action name="delBook" class="com.bq.DelBook">
                <result name="success" type="redirectAction">query</result>
                <result name="input">/show.jsp</result>
            </action>
                
            <action name="addBook" class="com.bq.AddBook">
                <result name="success" type="redirectAction">query</result>
                <result name="input">/show.jsp</result>
            </action>
        </package>
    </struts> 
       

    整体框架就有了,下来就是各个类了


    先看实体类及其Hibernate映射文件

    Book.java

    package com.bq;
    
    /**
     * @author 白强
     *
     */
    public class Book {
        private int id;
        private String name;
        private String detail;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getDetail() {
            return detail;
        }
        public void setDetail(String detail) {
            this.detail = detail;
        }
        @Override
        public String toString() {
            return "Book [id=" + id + ", name=" + name + ", detail=" + detail
                    +  "]";
        }
    }

    Book.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">
    <hibernate-mapping 
        package="com.bq">
    
        <class name="com.bq.Book" table="book">
            <id name="id">
                <generator class="increment"/>
            </id>
            <property name="name"/>
            <property name="detail"/>
        </class>
    </hibernate-mapping>

    然后是写DAO层

    接口BookDAO.java

    package com.bq;
    
    import java.util.List;
    
    public interface BookDAO  {
        
        List getAll();//获得所有记录
        
        List getBook(int pageSize, int startRow);//获得所有记录
        
        List queryBook(String fieldname,String value);//根据条件查询
        
        Book getBook(int id);//根据ID获得记录
        
        void addBook(Book book);//添加记录
        
        void updateBook(Book book);//修改记录
        
        void deleteBook(Book book);//删除记录
    
    }

    DAO实现类

    DAOImplement.java,里面用到

    this.getHibernateTemplate()的方法来自Spring

    可以利用它来完成数据库操作

    package com.bq;
    
    import java.util.List;
    
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    
    /**
     * @author 白强
     *
     */
    public class DAOImplement extends  HibernateDaoSupport implements BookDAO{
        
        public DAOImplement() {
            
        }
    
        @Override
        public List getAll() {
            
            String sql="from Book";
            return this.getHibernateTemplate().find(sql);
        }
    
        @Override
        public List getBook(int pageSize, int startRow) {
            return null;
        }
    
        @Override
        public List queryBook(String fieldname, String value) {
            System.out.println("value: "+value);
            String sql="FROM Book where "+fieldname+" like '%"+value+"%'";
            return this.getHibernateTemplate().find(sql);
        }
    
        @Override
        public Book getBook(int id) {
            
            return (Book)this.getHibernateTemplate().get(Book.class,id);
        }
    
        @Override
        public void addBook(Book book) {
            this.getHibernateTemplate().save(book);        
        }
    
        @Override
        public void updateBook(Book book) {
            this.getHibernateTemplate().update(book);
            
        }
    
        @Override
        public void deleteBook(Book book) {
            this.getHibernateTemplate().delete(book);
        }
    
    }

    写Service层

    BookService.java

    package com.bq;
    
    import java.util.List;
    
    /**
     * @author 白强
     *
     */
    public class BookService {
        private BookDAO bookDao;
        
        public BookDAO getBookDao() {
            return bookDao;
        }
    
        public void setBookDao(BookDAO bookDao) {
            this.bookDao = bookDao;
        }
        /**
         * 函数说明:获得一条的信息 参数说明: ID 返回值:对象
         */
        public Book getBook(int bookId) {
            return bookDao.getBook(bookId);
        }
    
        /**
         * 函数说明:修改信息 参数说明: 对象 返回值:
         */
        public void updateBook(Book book) {
            bookDao.updateBook(book);
        }
    
        /**
         * 函数说明:查询信息 参数说明: 集合 返回值:
         */
        public List queryBook(String fieldname, String value) {
            return bookDao.queryBook(fieldname, value);
        }
        
        public List queryBook() {
            return bookDao.getAll();
        }
        
        public void addBook(Book book) {
            bookDao.addBook(book);
        }
        
        public void delBook(Book book) {
            bookDao.deleteBook(book);
        }
        
    }

    这个时候我们的Service就写好了,然后再在控制Action中调用Service的方法就可以了


    QueryBook.java 查询得到List

    package com.bq;
    
    import java.util.List;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * @author 白强
     *
     */
    public class QueryBook extends ActionSupport {
        private Book book;
        private BookService service;
        private List<Book> list;
        public Book getBook() {
            return book;
        }
    
        public void setBook(Book book) {
            this.book = book;
        }
    
        public BookService getService() {
            return service;
        }
    
        public void setService(BookService service) {
            this.service = service;
        }
        public List<Book> getList() {
            return list;
        }
    
        public void setList(List<Book> list) {
            this.list = list;
        }
    
        @Override
        public String execute() throws Exception {
            if(service.queryBook()!=null){
                list=service.queryBook();
                return SUCCESS;
            }
            else{
            return INPUT;
            }
        }
        
    }

    添加Book

    AddBook.java

    package com.bq;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * @author 白强
     *
     */
    public class AddBook extends ActionSupport{
        private Book book;
        private BookService service;
        public Book getBook() {
            return book;
        }
        public void setBook(Book book) {
            this.book = book;
        }
        public BookService getService() {
            return service;
        }
        public void setService(BookService service) {
            this.service = service;
        }
        @Override
        public String execute() throws Exception {
            System.out.println(book.toString());        
                service.addBook(book);
                return SUCCESS;
        }
    }

    根据id得到Book

    GetBook.java

    package com.bq;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class GetBook extends ActionSupport {
        private int id;
        private Book book;
        private BookService service;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public Book getBook() {
            return book;
        }
        public void setBook(Book book) {
            this.book = book;
        }
        public BookService getService() {
            return service;
        }
        public void setService(BookService service) {
            this.service = service;
        }
        @Override
        public String execute() throws Exception {
            if(service.getBook(getId())!=null){
                book=service.getBook(getId());
                //service.updateBook(b);
                return SUCCESS;
            }
            else{
            return INPUT;
            }
        }
        
    }

    根据id更新Book

    ChangeBook.java

    package com.bq;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * @author 白强
     *
     */
    public class ChangeBook extends ActionSupport{
        private Book book;
        private BookService service;
        public Book getBook() {
            return book;
        }
        public void setBook(Book book) {
            this.book = book;
        }
        public BookService getService() {
            return service;
        }
        public void setService(BookService service) {
            this.service = service;
        }
        @Override
        public String execute() throws Exception {
            System.out.println(book.toString());
            if(service.getBook(book.getId())!=null){
                Book b=service.getBook(book.getId());
                service.updateBook(book);
                return SUCCESS;
            }
            else{
            return INPUT;
            }
        }
    }

    根据id删除Book

    DelBook.java

    package com.bq;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * @author 白强
     *
     */
    public class DelBook extends ActionSupport {
        private int id;
        private Book book;
        private BookService service;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public Book getBook() {
            return book;
        }
        public void setBook(Book book) {
            this.book = book;
        }
        public BookService getService() {
            return service;
        }
        public void setService(BookService service) {
            this.service = service;
        }
        @Override
        public String execute() throws Exception {
            if(service.getBook(getId())!=null){
                service.delBook(service.getBook(getId()));
                return SUCCESS;
            }
            else{
            return INPUT;
            }
        }
        
    }

    实现数据库的基本操作 增删改查 即可

    最后附上所有的jsp文件

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>欢迎</title>
      </head>
      
      <body>
       <h1 align="center"> 欢迎来到SSH整合测试页面</h1> <br>
       <div align="center">
         <a href="query">点击进入</a>&nbsp;&nbsp;<a href="add.jsp">增加书</a>
       </div>
      </body>
     
    </html>

    add.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    <%@ taglib prefix="s"  uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
    
    <META name="viewport" content="width=device-width, initial-scale=1">
    <TITLE>添加</TITLE>        
    
    <BODY>
    <DIV data-role="header" data-position="inline"> 
    <H1>增加书</H1></DIV>
    <DIV data-role="content">
    <FORM action="addBook" method="POST">
    <s:hidden name="book.id" ></s:hidden>
    <label>书名:</label>
    <input name="book.name" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" />
    <br> <label>详情:</label>
    <input name="book.detail" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" />
    <BUTTON type="submit" data-theme="b" data-inline="true">保存</BUTTON>
    <HR>
    </FORM>
    </DIV>
    <DIV class="footer-docs" data-role="footer" data-theme="c">
    <P>&nbsp;2012~2013  白强</P>
    </DIV>
    </BODY>
    </HTML>

    show.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>展示页面</title>
        <link href="css/style.css" rel="stylesheet" type="text/css" />    
      </head>
      
      <body>
       <h1 align="center"> 这里是展示页面</h1> <br>
       <div align="center">
       <table id="show" align="center" style="text-align: center">
    <tr>
       <td>
              ID
      </td>
    <td >
             名称
    </td>
    <td>
         描述
    </td>
    <td>
    操作
    </td>
    </tr>
    <s:iterator value="list">
    <tr>
       <td>
              ${id}
      </td>
    <td >
             ${name}
    </td>
    <td>
             ${detail}
    </td>
    <td>
             <s:url id="get" action="getBook">
        <s:param name="id">${id}</s:param>
           </s:url>
           <s:a href="%{get}">修改</s:a>
             <s:url id="del" action="delBook">
        <s:param name="id">${id}</s:param>
           </s:url>
           <s:a href="%{del}">删除</s:a>
    </td>
    </tr>
    </s:iterator>
    </table>
       </div>
      </body>
     
    </html>

    book.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    <%@ taglib prefix="s"  uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
    
    <META name="viewport" content="width=device-width, initial-scale=1">
    <TITLE>更改</TITLE>        
    
    <BODY>
    <DIV data-role="header" data-position="inline"> 
    <H1>更改书</H1></DIV>
    <DIV data-role="content">
    <FORM action="changeBook" method="POST">
    <s:hidden name="book.id" ></s:hidden>
    <s:textfield name="book.name" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" theme="simple" label="详情"></s:textfield>
    <br> 
    <s:textfield name="book.detail" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" theme="simple" label="详情"></s:textfield>
    <BUTTON type="submit" data-theme="b" data-inline="true">保存</BUTTON>
    <HR>
    </FORM>
    </DIV>
    <DIV class="footer-docs" data-role="footer" data-theme="c">
    <P>&nbsp;2012~2013  白强</P>
    </DIV>
    </BODY>
    </HTML>

    还有一个简单的style

    style.css

    @charset "UTF-8";
    /* CSS Document */
    
    table {
      border: solid 1px #D5D5D5;
      border-collapse: collapse;
        width:100%; 
    }
    
    table td {
        border:1px solid #D5D5D5;
        font-size:12px;
        padding:7px 5px;
    }
    
    table th {
        background-color:#EEE;
        border-right:1px solid #D5D5D5;
        font-size:13.5px;
        line-height:120%;
        font-weight:bold;
        padding:8px 5px;
        text-align:left;
    }
    .ui-resizable {
        position:relative;
    }
    .ui-resizable-handle {
        display:block;
        font-size:0.1px;
        position:absolute;
        z-index:99999;
    }
    
    .ui-resizable-s { 
        background:#EEEEEE url(../images/grippie.png) no-repeat scroll center 2px;
        border-top:1px solid #CCCCCC;
        bottom:-5px;
        cursor:s-resize;
        height:14px;
        left:0;width:100%; 
    }

    最后再附上下载地址

    http://sdrv.ms/178Gr9h


    就这样吧,不清楚的还可以问我。。。

  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/bq12345/p/3221022.html
Copyright © 2011-2022 走看看