struts2hibernate和SSH的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2hibernate和SSH的实现相关的知识,希望对你有一定的参考价值。

Struts2

为什么开发Struts框架?

为了符合更加灵活、高效的开发需求

实质上Struts2是以WebWork为核心的,他采用拦截机制来处理用户请求。

(1)Jsp部分

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="login" method="post"> 请输入学号:<input type="text" name="num"><br/><br/> <input type="submit" value="提交"/> </form> </body> </html>

(2)web.xml部分

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
> <!-- 指定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> </web-app>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter在lib里面,不同版本的struts对应的过滤器可能不一样,在这里的是2.4的版本

(3)lib部分

技术分享

并不需要所有的包(导入所有的包可能会出现错误)

(4)servlet部分

package test;

public class ServletTest {
    private String mess;
    private String num;
    public String getMess() {
        return mess;
    }
    public void setMess(String mess) {
        this.mess = mess;
    }
    public String getNum() {
        return num;
    }
    public void setNum(String num) {
        this.num = num;
    }
    public String execute(){
        if(num.equals("111"))
            return "success";
        else
            return "wrong";
    }
}

(5)struts.xml部分

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" extends="struts-default">
        <!-- 此处的name与index.jsp里面的action="login"对应 -->
        <!-- 此处的class是jsp对应的servlet类的完整名称 -->
        <action name="login" class="test.ServletTest">
            <!-- 此处的name与test.ServletTest.java里面的方法返回值相对应 -->
            <result name="success">/success.jsp</result>
            <result name="wrong">/wrong.jsp</result>
        </action>
    </package>
</struts>

 

Hibernate

为什么开发hibernate框架?

为了提高数据库访问层的编程速度,Gavin King 开发出了当今最流行的ORM框架——hibernate。

(1)实例类

package entity;

public class User {
    private int id;
    private String name;
    private int age;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

(2)实体类对应的.hbm.xml文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="org.hibernate.test.array">
    <!-- 在class里面,name是实体类的类名,table表示对应的表名 -->
    <class name="entity.User" lazy="true" table="user">
        <!-- name="id"表示entity.User表里面的id属性,colum="id"表示user表的字段名为id -->
        <!-- 如果name和colum的值一样,不需要写colum -->
        <id name="id" column="id">
            <generator class="native"/><!-- 表示user表里面的id字段是自增型的 -->
        </id>
        <!-- 其他属性使用property标签来映射 -->
        <property name="name" column="name"/>
        <property name="age" column="age"/>
    </class>


</hibernate-mapping>

注意:每一个实体类与他对应的.hbm.xml文件同名

(3)lib

技术分享

其实还有两个关于日志的包(教材上有介绍),但是在我下载的压缩文件里面没有找到

(4)Hibernate.cfg.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- 指定方言 -->
        <property name="dialect">org.hibernate.dialect.mysqlDialect</property>
        <!-- 数据库驱动 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库url -->
        <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
        <!-- 数据库用户名,密码 -->
        <property name="connection.username">root</property>
        <property name="connection.password">admin</property>
        <!-- 显示SQL语句 -->
        <property name="show_sql">true</property>
        <!-- 格式化SQL语句 -->
        <property name="format_sql">true</property>
        <!-- 用来关联hbm配置文件 -->
        <mapping resource="entity/User.hbm.xml"/>
    </session-factory>

</hibernate-configuration>

(5)Dao

package dao;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import entity.User;

public class DAO {
    private Configuration cfg;
    private SessionFactory sf;
    private Session s;
    private Transaction ts;
    /**
     * 构造函数
     */
    public DAO(){
        //获取hibernate的配置信息
        cfg = new Configuration().configure();
        //更具config创建sessionFactory
        sf = cfg.buildSessionFactory();
        //更具factory创建session
        s = sf.openSession();//开启Session,相当于开启JDBC的Connection
        ts = s.beginTransaction();//创建事物的对象ts
    }
    /**
     * 添加信息到数据库
     * @param name
     * @param age
     * @return
     */
    public int AddUser(User u){
        int r=1;
        User user = new User();
        user.setName(u.getName());
        user.setAge(u.getAge());
        try{
            s.save(user);
            ts.commit();
        }catch(Exception e){
            e.printStackTrace();
            ts.rollback();
            System.out.println("添加失败!!");
            r=0;
        }finally{
            s.close();
            sf.close();
        }
        return r;
    }
    /**
     * 删除数据库信息
     * @param id
     * @return
     */
    public int DeletUser(int id){
        int r =1;
        User user = new User();
        user.setId(id);
        try{
            s.delete(user);
            ts.commit();
        }catch(Exception e){
            e.printStackTrace();
            ts.rollback();
            System.out.println("删除失败!!");
            r=0;
        }finally{
            s.close();
            sf.close();
        }
        return r;
    }
    /**
     * 更新数据库信息
     * @param u
     * @return
     */
    public int UpdateUser(User u){
        int r=1;
        User user = (User)s.get(User.class, u.getId());
        if(u.getAge()!=0){
            user.setAge(u.getAge());
        }
        if(u.getName().length()!=0){
            user.setName(u.getName());
        }
        try{
            s.update(user);
            ts.commit();
        }catch(Exception e){
            e.printStackTrace();
            ts.rollback();
            System.out.println("更新失败!!");
            r=0;
        }finally{
            s.close();
            sf.close();
        }
        return r;
    }
    /**
     * 查询数据库所有信息
     * @return
     */
    public List QueryUser(){
        User user = new User();
        Query query = s.createQuery("from User");//注意!!这里是:from 实例类名
        List users = query.list();//序列化
        //迭代
        Iterator it = users.iterator();
        while(it.hasNext()){
            user=(User)it.next();
            System.out.println(user.getId()+"号"+user.getName()+" "+user.getAge()+"岁");
        }
        return users;
    }
    /**
     * 查询数据库所有名字是name的信息
     * @param name
     * @return
     */
    public List FindUserByName(String name){
        User user = new User();
        Query query = s.createQuery("from User where name=‘"+name+"‘");//注意!!这里是:from 实例类名
        List users = query.list();//序列化
        //迭代
        Iterator it = users.iterator();
        while(it.hasNext()){
            user=(User)it.next();
            System.out.println(user.getId()+"号"+user.getName()+" "+user.getAge()+"岁");
        }
        return users;
    }
    /**
     * 查询数据库所有id是id的信息
     * @param id
     * @return
     */
    public User FindUserById(int id){
        User user = (User)s.get(User.class, id);
        return user;
    }
}

(6)数据库的增删查改

A:添加信息到数据库

package action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import entity.User;
import dao.DAO;

public class Add  extends HttpServlet{
    public void service(HttpServletRequest request,HttpServletResponse response){
        String mess="添加用户信息成功!!";
        String user = "minuobaci";
        int age = 12;
        User u = new User();
        u.setAge(age);
        u.setName(user);
        DAO dao = new DAO();
        int r = dao.AddUser(u);
        if(r==0){
            mess="添加用户信息失败!!";
            System.out.println("添加用户信息失败!!");        
        }
        try {
            request.setAttribute("mess", mess);
            request.getRequestDispatcher("/all").forward(request, response);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
}

B:删除数据库信息

package action;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.DAO;

public class Delete extends HttpServlet{
    public void service(HttpServletRequest request,HttpServletResponse response){
        String mess="删除用户信息成功!!";
        int id = 1;
        
        DAO dao = new DAO();
        int r = dao.DeletUser(id);
        if(r==0){
            mess="删除用户信息失败!!";
            System.out.println("删除用户信息失败!!");        
        }
        try {
            request.setAttribute("mess", mess);
            request.getRequestDispatcher("/all").forward(request, response);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
}

C:遍历数据库所有信息

package action;



import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import entity.User;
import dao.DAO;

public class Find extends HttpServlet{
    public void service(HttpServletRequest request,HttpServletResponse response){
        String user = "minuobaci";
        DAO dao = new DAO();
        List lists =  dao.FindUserByName(user);
        for(User u:lists){
            System.out.println("username: "+u.getId()+" age:"+u.getName())
        }
    }
}

 

 SSH

1:创建web项目并导入对应的jar包

2:修改web.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
> <!-- spring 监听器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 指定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> </web-app>

3:创建实体类

package com.gx.entity;

public class User {
    private int id;
     private String name;
     private int age;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

4:创建实体类对应的hibernate配置文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="org.hibernate.test.array">
    <!-- 在class里面,name是实体类的类名,table表示对应的表名 -->
    <class name="com.gx.entity.User" lazy="true" table="user">
        <!-- name="id"表示entity.User表里面的id属性,colum="id"表示user表的字段名为id -->
        <!-- 如果name和colum的值一样,不需要写colum -->
        <id name="id" column="id">
            <generator class="native"/><!-- 表示user表里面的id字段是自增型的 -->
        </id>
        <!-- 其他属性使用property标签来映射 -->
        <property name="name" column="name"/>
        <property name="age" column="age"/>
    </class>


</hibernate-mapping>

5:创建spring配置文件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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                   http://www.springframework.org/schema/beans/spring-beans.xsd
                   http://www.springframework.org/schema/context
                   http://www.springframework.org/schema/context/spring-context.xsd
                   http://www.springframework.org/schema/tx
                   http://www.springframework.org/schema/tx/spring-tx.xsd
                   http://www.springframework.org/schema/aop
                   http://www.springframework.org/schema/aop/spring-aop.xsd">
 
    <bean name="sf"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="ds" />
        <property name="mappingResources">
            <list>
                <value>com/gx/entity/User.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.MySQLDialect
                hibernate.show_sql=true
                hbm2ddl.auto=update
            </value>
        </property>
    </bean>    
         
    <bean name="ds"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3307/test?characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>   
</beans>

6:创建Dao接口

package com.gx.dao;

import java.util.List;

import com.gx.entity.User;

public interface UserDAO {
    //增加用户
    public int addUser(User user);
    //删除用户
    public int deleteUser(User user);
    //通过id查询用户
    public User findUserById(int id);
    //通过用户名查询用户
    public List<User> findUserByName(String name);
    //查询所有用户
    public List<User> findAll();
    //修改用户
    public int updateUser(User user);
}

7:创建Dao接口的实现类

package com.gx.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.gx.entity.User;

public class UserDAOImp extends HibernateDaoSupport implements UserDAO{
    /**
     * 增加用户
     */
    public int addUser(User user){
        int r=1;
        System.out.println("########################################");
        try{
            this.getHibernateTemplate().save(user);
            System.out.println("在UserDAOImp里面的addUser方法中添加用户成功!!");
            System.out.println("########################################");
        }catch(Exception  e){
            r=0;
            System.out.println("在UserDAOImp里面的addUser方法中添加用户失败……");
            System.out.println("########################################");
        }
        return r;
    }
    /**
     *删除用户
     */
    public int deleteUser(User user){
        int r=1;
        System.out.println("########################################");
        try{
            this.getHibernateTemplate().delete(user);
            System.out.println("在UserDAOImp里面的deleteUser方法中删除用户成功!!");
            System.out.println("########################################");
        }catch(Exception  e){
            r=0;
            System.out.println("在UserDAOImp里面的deleteUser方法中删除用户失败……");
            System.out.println("########################################");
        }
        return r;
    }
    /**
     * 通过用户名查询用户
     */
    public List<User> findUserByName(String name){
        ApplicationContext context = 
          new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); SessionFactory lsf = (SessionFactory) context.getBean("sf"); Session session = lsf.openSession(); Transaction t = session.beginTransaction(); String hql="from User where name=‘"+name+"‘"; System.out.println("########################################"); System.out.println("在UserDAOImp里面的findUserByName方法中hql="+hql); System.out.println("########################################"); List<User> users = session.createQuery(hql).list(); return users; } /** * 查询所有用户 */ public List<User> findAll(){ return this.getHibernateTemplate().find("from User"); } /** * 通过id查询用户 */ public User findUserById(int id){ return (User)this.getHibernateTemplate().get(User.class, id); } /** * 修改用户 */ public int updateUser(User user){ int r=1; System.out.println("########################################"); try{ this.getHibernateTemplate().update(user); System.out.println("在UserDAOImp里面的updateUser方法中更新用户成功!!"); System.out.println("########################################"); }catch(Exception e){ r=0; System.out.println("在UserDAOImp里面的updateUser方法中更新用户失败……"); System.out.println("########################################"); } return r; } }

8:在applicationContext.xml添加以下代码

    <bean name="UserDAO" class="com.gx.dao.UserDAOImp">
        <property name="sessionFactory" ref="sf" />
    </bean>

9:创建Service接口

package com.gx.service;

import java.util.List;

import com.gx.entity.User;

public interface UserService {
    //添加用户
    public String addUser(User user);
    //通过id查询用户
    public User findUserByID(int id);
    //查询所有用户
    public List<User> findAll ();
    //通过用户名查询
    public List<User> findUserByName(String name); 
    //删除用户
    public String deleteUser(User user);
    //更新用户
    public String updateUser(User user);
}

10:创建Service接口的实现类

package com.gx.service;

import java.util.List;

import com.gx.dao.UserDAO;
import com.gx.entity.User;

public class UserServiceImp implements UserService{
    private UserDAO udao;
    public UserDAO getUdao() {
        return udao;
    }
    public void setUdao(UserDAO udao) {
        this.udao = udao;
    }
    /**
     * 更新用户
     */
    public String updateUser(User user){
        System.out.println("***********************************************");
        System.out.println("正在执行UserServiceImp中的updateUser方法……");
        System.out.println("***********************************************");
        int r = udao.updateUser(user);
        if(r==0)
            return "更新失败!!";
        else
            return "ok";
    }
    /**
     * 添加用户
     */
    public String addUser(User user){
        System.out.println("***********************************************");
        System.out.println("正在执行UserServiceImp中的addUser方法……");
        System.out.println("***********************************************");
        int r = udao.addUser(user);
        if(r==0)
            return "添加用户失败!!";
        return "ok";
    }
    /**
     * 查询所有用户
     */
    public List<User> findAll (){
        return udao.findAll();
    }
    /**
     * 通过用户名查询
     */
    public List<User> findUserByName(String name){
        System.out.println("***********************************************");
        System.out.println("正在执行UserServiceImp中的findUserByName方法……");
        System.out.println("***********************************************");
        return udao.findUserByName(name);
    }
    /**
     * 删除用户
     */
    public String deleteUser(User user){
        System.out.println("***********************************************");
        System.out.println("正在执行UserServiceImp中的deleteUser方法……");
        System.out.println("***********************************************");
        int r = udao.deleteUser(user);
        if(r==0)
            return "删除用户失败!!";
        else
            return "ok";
    }
    /**
     * 通过id查询用户
     */
    public User findUserByID(int id){
        return udao.findUserById(id);
    }
}

11:在applicationContext.xml里面添加以下代码

    <bean id="UserService" class="com.gx.service.UserServiceImp">
           <property name="udao" ref="UserDAO"></property>
    </bean>

12:创建Action接口

package com.gx.action;

public interface UserAction {
    //添加用户
    public String add();
    //显示所有的用户
    public String show();
    //显示所查询的用户
    public String find();
    //删除用户
    public String delete();
    //更新用户,获得用户信息
    public String updateGet();
    //更新用户 更新信息
    public String update();
}

13:创建Action的实现类

package com.gx.action;

import java.util.List;
import com.gx.service.UserService;
import com.gx.entity.User;
public class UserActionImp implements UserAction{
    private UserService uservice;
    private List<User> users;
    private User user;
    private String mess;
    public String getMess() {
        return mess;
    }
    public void setMess(String mess) {
        this.mess = mess;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public UserService getUservice() {
        return uservice;
    }
    public void setUservice(UserService uservice) {
        this.uservice = uservice;
    }
    public List<User> getUsers() {
        return users;
    }
    public void setUsers(List<User> users) {
        this.users = users;
    }
    /**
     * 添加用户
     */
    public String add(){
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("在UserActionImp中的add方法中");
        System.out.println(user.toString());
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        mess = uservice.addUser(user);
        if(mess.equals("ok")){
            users = uservice.findAll();
            return "addtrue";
        }else{
            return "addfalse";
        }
    }
    /**
     * 显示所有的用户
     */
    public String show(){
        users = uservice.findAll();
        return "addtrue";
    }
    /**
     * 显示所查询的用户
     */
    public String find(){
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("正在执行UserActionImp中的find方法……");
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        users = uservice.findUserByName(user.getName());
        return "addtrue";
    }
    /**
     * 删除用户
     */
    public String delete(){
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("正在执行UserActionImp中的delete方法……");
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        User u = uservice.findUserByID(user.getId());
        mess = uservice.deleteUser(u);
        if(mess.equals("ok"))
            mess="删除用户成功!!";
        users = uservice.findAll();
        return "addtrue";
    }
    /**
     * 更新用户 , 获得用户信息
     */
    public String updateGet(){
        user = uservice.findUserByID(user.getId());
        return "updatetrue";
    }
    /**
     * 更新用户信息 , 更新用户信息
     */
    public String update(){
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("正在执行UserActionImp中的update方法……");
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        User u = uservice.findUserByID(user.getId());
        u.setAge(user.getAge());
        u.setName(user.getName());
        mess = uservice.updateUser(u);
        if(mess.equals("ok")){
            users = uservice.findAll();
            return "addtrue";
        }
        return "updatetrue";
    }
}

14:在applicationContext.xml文件里面添加以下代码

<bean id="User" class="com.gx.action.UserActionImp">
   <property name="uservice" ref="UserService"></property>
</bean>

15:创建Struts2配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" extends="struts-default">
        <action name="user_*" class="User" method="{1}">
            <result name="addtrue">/index.jsp</result>
            <result name="addfalse">/addUser.jsp</result>
            <result name="updatetrue">/updateUser.jsp</result>
        </action>
    </package>
</struts>

16:创建index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = 
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>主页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="css/index.css"> </head> <body> <form action="user_find" method="post"> <input id="find" type="text" name="user.name" placeholder="请输入需要查找的用户名" /> <input id="fs" type="submit" value="查询" /> </form> <hr> <div id="mess">${mess}</div> <table id="table"> <tr> <td>用户id</td> <td>用户名</td> <td>用户年龄</td> <td>更新用户</td> <td>删除用户</td> </tr> <c:forEach items="${users}" var="user"> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.age}</td> <td><a style="color:yellow" href="user_updateGet?user.id=${user.id}">更新</a></td> <td><a style="color:red" href="user_delete?user.id=${user.id}">删除</a></td> </tr> </c:forEach> </table> </body> </html>

17:创建addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <div id="mess">${mess}</div> <div id="back"> <div id="title">添加用户|ADD</div> <form action="user_add" method="post"> <div id="bottom"> <br/> <input class="input" name="user.name" type="text" placeholder="请输入用户名" /><br/> <input class="input" name="user.age" type="text" placeholder="请输入用户年龄" /><br/> <br/><a id="a" href="user_show">返回主页面</a><br/> <input id="up" type="submit" value="添加" /><br/><br/> </div> </form> </div> </body> </html>

18:创建updateUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
      <div id="mess">${mess}</div>
      <div id="back">
    <div id="title">更新用户|UPDATE</div>
    <form action="user_update" method="post">
    <div id="bottom">
        <br/>
        请输入用户名
        <input class="input" name="user.name" value="${user.name}"  type="text"/><br/>
        请输入用户年龄
        <input class="input" name="user.age" value="${user.age}" type="text"/><br/>
        <br/><a id="a" href="user_show">返回主页面</a><br/>
        <input id="up" type="submit"  value="添加"  /><br/><br/>
    </div>
    </form>
      </div>
  </body>
</html>

 







以上是关于struts2hibernate和SSH的实现的主要内容,如果未能解决你的问题,请参考以下文章

SSH---Struts2Hibernate5Spring4集成开发

SSH---Struts2Hibernate5Spring4散点知识

SSH 框架整合(maven版本 xml配置方式)

Java利用JSch实现sftp通过ssh上传下载删除文件及配置代码

使用sshpass和ssh实现无密码自动远程登录

使用python 实现SSH登录设备时出现问题?