SSH整合的程序

本文介绍了一个基于Hibernate框架的宠物管理系统的设计与实现过程。系统包括利用DAO模式进行数据访问、Service层处理业务逻辑、Action层处理用户请求及JSP页面展示等功能模块。通过此系统可以完成宠物信息的增删改查等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

util包配置


package com.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DaoUtil {
    public static final SessionFactory sf = new Configuration().configure().buildSessionFactory();
}





dao包方法


package com.dao;

import java.util.List;

import com.bawei.wang.bean.Dog;
import com.bawei.wang.bean.DogType;

public interface DogDao {
    public void register(Dog dog);
    public List<DogType> selectDogType();
public List<Dog> getDogList();
public void delete(Dog dog);
public Dog selectById(Dog dog);
public void update(Dog dog);
}




dao层实现类





package com.bawei.wang.dao;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.bawei.wang.bean.Dog;
import com.bawei.wang.bean.DogType;
import com.bawei.wang.util.DaoUtil;

public class DogDaoImpl extends HibernateDaoSupport implements DogDao{
    Session session = null;
    Transaction transaction = null;
    @SuppressWarnings("unchecked")
    @Override
    public List<Dog> getDogList() {
    List<Dog>    list=this.getHibernateTemplate().find("from Dog");
        return list;
        
    }
    /*@Override
    public List<Dog> getDogList() {
        Session session=DaoUtil.sf.openSession();
        Query query=session.createQuery("from Dog");
        List<Dog> list=query.list();
        return list;
    }*/
    @Override
    public void register(Dog dog) {
        try {
            session = DaoUtil.sf.openSession();
            transaction = session.beginTransaction();
            session.save(dog);
            transaction.commit();
        } catch (HibernateException e) {
            transaction.rollback();
            e.getStackTrace();
        } finally {
            session.close();
        }

    }
    @Override
    public List<DogType> selectDogType() {
        List<DogType> list = null;
        session = DaoUtil.sf.openSession();
        Query query = session.createQuery("from DogType");
        list = query.list();
        return list;
    }

    @Override
    public void delete(Dog dog) {
        Session session=DaoUtil.sf.openSession();
        try {
            
            transaction = session.beginTransaction();
            session.delete(dog);
            transaction.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.close();
        }
    }
    @Override
    public Dog selectById(Dog dog) {
        session = DaoUtil.sf.openSession();
        Dog d = null;
        try {
            d = (Dog) session.get(Dog.class, dog.getId());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            session.close();
        }
        return d;
    }

    @Override
    public void update(Dog dog) {
        session = DaoUtil.sf.openSession();
        try {
            transaction = session.beginTransaction();
            session.update(dog);
            transaction.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.close();
        }        
    }


}






service层实现类




package com.service;

import java.util.List;

import com..bean.Dog;
import com..bean.DogType;
import com..dao.DogDao;

public class DogServiceImpl implements DogService{
private DogDao dao;

    @Override
    public List<Dog> getDogList() {
        // TODO Auto-generated method stub
        return dao.getDogList();
    }

    public DogDao getDao() {
        return dao;
    }

    public void setDao(DogDao dao) {
        this.dao = dao;
    }

    @Override
    public void register(Dog dog) {
        dao.register(dog);
    }

    @Override
    public List<DogType> selectDogType() {
        // TODO Auto-generated method stub
        return dao.selectDogType();
    }

    @Override
    public void delete(Dog dog) {
        dao.delete(dog);
    }

    @Override
    public Dog selectById(Dog dog) {
        // TODO Auto-generated method stub
        return dao.selectById(dog);
    }

    @Override
    public void update(Dog dog) {
        dao.update(dog);
    }

    
    
    
    
}







action类的方法


package com.bawei.wang.action;

import java.util.List;

import com.bean.Dog;
import com.service.DogService;

public class DogAction {
public DogService service;
public List list;
public Dog dog;

public String getDogList(){
    System.out.println("进入查询方法");
    list=service.getDogList();
return "listDog";
}
public String register() {
    System.out.println("进入添加方法");
    service.register(dog);
    return getDogList();
}
public String delete() {
    System.out.println("进入删除方法");
    service.delete(dog);
    return getDogList();
}
public String update() {
    System.out.println("进入修改方法");
    service.update(dog);
    dog.setName("");
    return getDogList();
}
public String selectById() {
    dog = service.selectById(dog);
    list = service.selectDogType();
    return "update";
}
public Dog getDog() {
    return dog;
}



public void setDog(Dog dog) {
    this.dog = dog;
}



public DogService getService() {
    return service;
}
public void setService(DogService service) {
    this.service = service;
}
public List getList() {
    return list;
}
public void setList(List list) {
    this.list = list;
}

}






查询界面JSP的显示



在展示界面的时候要有一个list集合查出来展示

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
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>My JSP 'index.jsp' starting page</title>
  <body>
   <table border="1" bgcolor="palegreen">
 <tr>
 <td>id</td>
 <td>name</td>
 <td>age</td>
 <td>love</td>
 <td>health</td>
 <td>品种id</td>
 <td>品种类型</td>
 <td>操作</td>
 </tr>
   <c:forEach items="${list }" var="dog">
   <tr>
   <td>${dog.id }</td>
   <td>${dog.name}</td>
   <td>${dog.age }</td>
   <td>${dog.love }</td>
   <td>${dog.health }</td>
   <td>${dog.dogType.tid }</td>
   <td>${dog.dogType.tname }</td>
   <td><a href="DogAction!delete.action?dog.id=${dog.id }">删除</a>  
   <a href="insert.jsp">添加</a>   
    </td>
   </tr>
   
   
   
   </c:forEach>
   
   
   </table>




 <br>
  </body>
</html>





添加界面的JSP


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
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>
    <form action="DogAction!register.action" method="post">
  名字:<input type="text" id="name" name="dog.name" />
  年龄:<input type="text" id="age" name="dog.age"  >
  亲密值:<input type="text" id="love" name="dog.love"  >
  健康值: <input type="text" id="health" name="dog.health"  >
  请选择
  <select  name="dog.dogType.id" id="selectid">
  <option value="">---请选择身份---</option>
  <c:forEach items="${list }" var="dogType">
  <option value="${dogType.id }">${dogType.tname }</option>
  </c:forEach>
  </select>
  <input type="submit" value="注册" />
    </form>
  </body>
</html>







修改的JSP




<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
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%>">
      <script type="text/javascript" src="My97DatePickerBeta/My97DatePicker/WdatePicker.js"></script>
  </head>
  <body >
   <form action="CupAction!update" method="post">
   <table border="1" bgcolor="palegreen">
   <tr>
  <td>编号:</td>
   <td><input type="text"  readonly="readonly" value="${cup.id }" name="cup.id" /></td>
  </tr>
  <tr>
  <td>名字:</td>
   <td><input type="text" value="${cup.name }" name="cup.name" /></td>
  </tr>
   <tr>
  <td>颜色:</td>
   <td><input type="text" value="${cup.color }" name="cup.color" /></td>
  </tr>
   <tr>
  <td>大小:</td>
   <td>
   <input type="radio" name="cup.size" <c:if test="${cup.size=='0' }"> checked="checked" </c:if>  value="0" >
   <input type="radio" name="cup.size" <c:if test="${cup.size==1 }"> checked="checked" </c:if>  value="1" >
   <input type="radio" name="cup.size" <c:if test="${cup.size=='2' }"> checked="checked" </c:if> value="2">
   </td>
  </tr>
  <tr>
  <td>日期:</td>
  <td>  <input class="Wdate" name="cup.createtime" value="${cup.createtime }" type="text" id="temp"   οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})"/> </td>
  </tr>
   <tr>
  <td>请选择:</td>
   <td><select  name="cup.Cuptype.cid" id="selectid">
  <option value="">---请选择身份---</option>
  <c:forEach items="${list }" var="cuptype">
  <option value="${cuptype.cid }"<c:if test="${ cuptype.cid==cup.cuptype.cid}" >selected="selected"</c:if>>${cuptype.cname }</option>
  </c:forEach>
  </select></td>  
  </tr>
  <tr><td><input type="submit" value="修改" ></td></tr>
  </table>
   </form>
  </body>
</html>



在当今计算机视觉领域,深度学习模型在图像分割任务中发挥着关键作用,其中 UNet 是一种在医学影像分析、遥感图像处理等领域广泛应用的经典架构。然而,面对复杂结构和多尺度特征的图像,UNet 的性能存在局限性。因此,Nested UNet(也称 UNet++)应运而生,它通过改进 UNet 的结构,增强了特征融合能力,提升了复杂图像的分割效果。 UNet 是 Ronneberger 等人在 2015 年提出的一种卷积神经网络,主要用于生物医学图像分割。它采用对称的编码器 - 解码器结构,编码器负责提取图像特征,解码器则将特征映射回原始空间,生成像素级预测结果。其跳跃连接设计能够有效传递低层次的细节信息,从而提高分割精度。 尽管 UNet 在许多场景中表现出色,但在处理复杂结构和多尺度特征的图像时,性能会有所下降。Nested UNet 通过引入更深层次的特征融合来解决这一问题。它在不同尺度上建立了密集的连接路径,增强了特征的传递与融合。这种“嵌套”结构不仅保持了较高分辨率,还增加了特征学习的深度,使模型能够更好地捕获不同层次的特征,从而显著提升了复杂结构的分割效果。 模型结构:在 PyTorch 中,可以使用 nn.Module 构建 Nested UNet 的网络结构。编码器部分包含多个卷积层和池化层,并通过跳跃连接传递信息;解码器部分则包含上采样层和卷积层,并与编码器的跳跃连接融合。每个阶段的连接路径需要精心设计,以确保不同尺度信息的有效融合。 编码器 - 解码器连接:Nested UNet 的核心在于多层次的连接。通过在解码器中引入“skip connection blocks”,将编码器的输出与解码器的输入相结合,形成一个密集的连接网络,从而实现特征的深度融合。 训练与优化:训练 Nested UNet 时,需要选择合适的损失函数和优化器。对于图像分割任务,常用的损失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值