struts操作数据库-工厂篇

Struts+Hibernate的MVC集成实践 本文还有配套的精品资源,点击获取 简介:Struts和Hibernate是Java Web开发中用于实现MVC模式的开源框架,通过MVC模式提高应用程序的可维护性和扩展性。Struts负责处理用户请求、控制流程和视图展示,而Hibernate简化了数据库操作。本文介绍了如何将Struts和Hibernate结合起来,实现数据访问层和业务逻辑层的分离,以及如何配置和使用这两个... 阅读详情

程序要求:程序开始,第一个页面要显示,以这样的信息,一个下拉框用来选择“用户的部门名称”,这个下拉框中的内容要从“部门信息表中取得”(当页面一生成的时候就要获得)。然后按下“提交”按钮,能显示所有该部门的员工。

分析:因为页面一生成的时候就要从“部门表”中获得数据,所以我要采用一种方式让页面生成的时候就能操作action获得数据。数据的显示不再是单一数据,所以在页面上设计到循环。显示出来的一项数据不再是一个数据。

建立数据表:还记得我们在上一篇中建立的数据库吗。

数据库名字叫“user”已经有一个表叫“userTable”,我们现在就在这个数据库中再建立一个

表“depatTable”

部门号码             depatNo            文本

部门名称             depatName          文本

填入几个值:

001         生产部

002         工程部

003         人事部

程序开始

从现在开始,我们将按照真正项目开发的思想来做,模块的划分将细致起来

A模块:提供数据库连接

B模块:actionAndForm模块

C模块: 业务逻辑,提供数据的操作

D模块: 数据实体封装

这些模块实际上就是“包”的概念,在eclipse中建立“包”我就不想说了

A模块(2个类)——package dataConnectFactory

ConnectFactory类

//数据连接工厂

package dataConnectFactory;

import java.sql.*;

public class ConnectFactory

{

    //定义数据库的驱动程序(以下给出的是连接odbc数据库的)

   private static String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";

   //定义数据库的URL(名称)

   private static String  strConnection="jdbc:odbc:user";

  //数据访问的用户名

   private static String  strUsername="";

  //数据库访问的密码

   private static String  strPassword="";

   

    public static Connection getConnectionByDriver()

             throws MyException

    {

       Connection conn = null;

       try

       {

           Class.forName(strDriver);//注册驱动

           conn = //获得连接

              DriverManager.getConnection(  strConnection,

                                         strUsername,

                                         strPassword);

       }

       catch(ClassNotFoundException ex1)

       {

           ex1.printStackTrace();

           throw new MyException("Class Not Found!");

       }

       catch(SQLException ex2)

       {

           ex2.printStackTrace();

           throw new MyException("SQL Error");

       }

       finally {}

       return conn;

    }

}

                              MyException类

package dataConnectFactory;

//定义自己的异常类

public class MyException extends Exception

{

    public MyException()

    {

       super();

    }

   

    public MyException(String message)

    {

       super(message);

    }

}

B模块(3个类)——package  action

UserAction类

package action;

//当第一个查询页面一生成的时候就把部门的信息得到并交给页面

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

import biz.SearchBiz;

import entity.*;

public class UserAction extends DispatchAction

{

    //转到查询界面

    public ActionForward toSearch(  ActionMapping mapping,

                                    ActionForm form,

                                    HttpServletRequest request,

                                    HttpServletResponse response)

       throws Exception

    {

       

       //定义错误信息封装

       ActionErrors errors = null;

       //获取页面表单信息

       UserForm uf = (UserForm)form;

       //定义部门实体数组

       DepartmentEntity[] departs = null;

      

       SearchBiz searchBizDept = null;

       try

       {

           searchBizDept = new SearchBiz();

           departs =

              searchBizDept.selectDeptEntitys(

                  new DepartmentEntity());

           uf.setDeparts(departs);

          

       }

   

    catch (Exception e)

       {

           errors = new ActionErrors();

           e.printStackTrace();

           errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("system.exception"));

           return mapping.findForward("error");

       }

      

 

       finally

       {

           if (errors != null)

           {

              saveErrors(request, errors);

           }

       }

       return mapping.findForward("toSearch");

    } 

}

package action;

UserForm类

//将所有的实体封装到form中

import org.apache.struts.action.ActionForm;

 

import entity.*;

 

public class UserForm extends ActionForm

{

    private   UserEntity user = new UserEntity();

    private   UserEntity[] users = null;

    private   DepartmentEntity depart = new DepartmentEntity();

    private   DepartmentEntity[] departs = null;

    public DepartmentEntity getDepart()

    {

       return depart;

    }

    public DepartmentEntity[] getDeparts()

    {

       return departs;

    }

    public UserEntity getUser() {

       return user;

    }

    public UserEntity[] getUsers()

    {

       return users;

    }

    public void setDepart(DepartmentEntity depart)

    {

       this.depart = depart;

    }

    public void setDeparts(DepartmentEntity[] departs)

    {

       this.departs = departs;

    }

    public void setUser(UserEntity user)

    {

       this.user = user;

    }

    public void setUsers(UserEntity[] users)

    {

       this.users = users;

    }

}

ResultAction

package action;

//当页面提交后,按照页面提交的条件来查询

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

import biz.SearchBiz;

import entity.*;

public class ResultAction extends DispatchAction

{

    public ActionForward execute   (    ActionMapping mapping,

                                    ActionForm form,

                                    HttpServletRequest request,

                                    HttpServletResponse response)

           throws Exception

       {

           //定义错误信息封装

           ActionErrors errors = null;

           //获取页面表单信息

           UserForm uf = (UserForm)form;

           //定义用户实体数组

           UserEntity[] userEntitys = null;

           //定义用户实体

           UserEntity userEntity=new UserEntity();

              //获得页面上提交的数据

           userEntity=uf.getUser();

          

           System.out.println(userEntity.getDepartNo());

           SearchBiz searchBiz = null;

           try

           {

              searchBiz = new SearchBiz();

              userEntitys = searchBiz.selectUserEntitys(userEntity );

              uf.setUsers(userEntitys);

             

           }

           catch (Exception e)

           {

 

              return mapping.findForward("error");

           }

           finally

           {

      

           }

           return mapping.findForward("success");

       }

}

C模块(1个类)——package biz

SearchBiz类

package biz;

//这里完成查询和数据的转换操作等所有数据的操作

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

 

import dataConnectFactory.ConnectFactory;

import dataConnectFactory.MyException;

import entity.*;

 

public class SearchBiz

{

    private String strDriver;

    private String strConnection;

    private String strUsername;

    private String strPassword;

    //查询用户信息 

    public UserEntity[] selectUserEntitys(UserEntity userEntity)

                            throws MyException

    {

       UserEntity[] employeeEntitys = null;

       Connection conn = null;

       PreparedStatement pstmt = null;

       ResultSet rs = null;

       StringBuffer sbSQL = new StringBuffer();

       ArrayList list = null;

       try

       {

           conn = ConnectFactory.getConnectionByDriver( );

           //生成sql

           sbSQL.append(" select ");

           sbSQL.append(" userTable.userNo,");

           sbSQL.append(" userTable.departNo,");

           sbSQL.append(" departTable.departName");

           sbSQL.append(" from userTable,departTable");

           sbSQL.append(" where

 userTable.departNo='"+userEntity.getDepartNo()+"'");

           sbSQL.append(" and ");

           sbSQL.append(" userTable.departNo = departTable.departNo ");

          

           System.out.println(sbSQL.toString());

          

           pstmt = conn.prepareStatement(sbSQL.toString());

           rs = pstmt.executeQuery();

          

           list = parseArray(rs,1);

           list.trimToSize();

           employeeEntitys = new UserEntity[list.size()];

           if (employeeEntitys != null && list.size()>0)

           {

              employeeEntitys =

                  (UserEntity[])list.toArray(employeeEntitys);

           }

       }

       catch(MyException ex1)

       {

           ex1.printStackTrace();

           throw ex1;

       }

       catch(SQLException ex2)

       {

           ex2.printStackTrace();

           throw new MyException("SQL Error");

       }

       finally//数据库访问完毕后,关闭相关的连接,

                //释放资源,是你应该要做的

       {

           try

           {

              if(rs!=null)

          

               {

                  rs.close();

                 rs=null;

               }

               if(pstmt!=null)

               {

               pstmt.close();

               pstmt=null;

               }

           }

           catch(SQLException e)

           {

              e.printStackTrace();

           }

       }

       return employeeEntitys;

    }

    //查询部门信息

    public DepartmentEntity[] selectDeptEntitys(DepartmentEntity departmentEntity)

                                throws MyException

    {

       DepartmentEntity[] departmentEntitys = null;

      

       Connection conn = null;

       //以前用Statement,现在用PrepareStatement

       //那是因为PrepareStatement有一个预编译的过程

       PreparedStatement pstmt = null;

       ResultSet rs = null;

       StringBuffer sbSQL = new StringBuffer();

       ArrayList list = null;

       try

       {

           conn = ConnectFactory.getConnectionByDriver();

           sbSQL.append("select departNo,departName from departTable");

 

           pstmt = conn.prepareStatement(sbSQL.toString());//预编译

           rs = pstmt.executeQuery(); //执行                  

          

           list = parseArray(rs,2);//把结果集转换为实体数组

           list.trimToSize();

           departmentEntitys = new DepartmentEntity[list.size()];

           if (departmentEntitys != null && list.size()>0)

           {

              departmentEntitys =

              (DepartmentEntity[])list.toArray(departmentEntitys);

           }

       }

       catch(MyException ex1)

       {

           ex1.printStackTrace();

           throw ex1;

       }

       catch(SQLException ex2)

       {

           ex2.printStackTrace();

           throw new MyException("SQL Error");

       }

       catch(Exception ex3)

       {

           ex3.printStackTrace();

           throw new MyException("Exception");

       }

       finally//数据库访问完毕后,关闭相关的连接,

               //释放资源,是你应该要做的

       {

           try

           {

              if(rs!=null)

              {

                 rs.close();

                 rs=null;

              }

              if(pstmt!=null)

              {

                  pstmt.close();

                  pstmt=null;

              }

           }

           catch(SQLException e)

           {

              e.printStackTrace();

           }

       }

       return departmentEntitys;

    }

    //把结果集转换为实体数组的方法

    protected ArrayList parseArray(ResultSet rs,long lType) throws SQLException

    {

       ArrayList list = new ArrayList();

       UserEntity userEntity = null;

       DepartmentEntity departmentEntity = null;

       Object object = null;

       try {

          

           while (rs.next())

           {

              if (lType ==1)

              {

                  userEntity = new UserEntity();

                  userEntity.setUserNo(rs.getString("userNo"));

                  userEntity.setDepartNo(rs.getString("departNo"));

                  userEntity.setDepartName(rs.getString("departName"));

                  object = (Object) userEntity;

              }

              else

              {

                  departmentEntity = new DepartmentEntity();

                  departmentEntity.setDepartmentNo(rs.getString("departNo"));

                  departmentEntity.setDepartmentName(rs.getString("departName"));

                  object = (Object) departmentEntity;

              }

              list.add(object);

           }

       }

       catch(SQLException ex)

       {

           ex.printStackTrace();

           throw ex;

       }

       finally {}

       return list;

    }

}

D模块(2个类)——package entity

UserEntity类

package entity;

//用户信息实体

public class UserEntity

{

    private String userNo = null;

    private String userPassword = null;

    private String departNo = null;

    private String departName = null;

    public String getDepartName()

    {

       return departName==null?"":departName.trim();

    }

    public String getDepartNo()

    {

       return departNo==null?"":departNo.trim();

    }

    public String getUserNo()

    {

       return userNo==null?"":userNo.trim();

    }

    public String getUserPassword()

    {

       return userPassword==null?"":userPassword.trim();

    }

    public void setDepartName(String departName)

    {

       this.departName = departName;

    }

    public void setDepartNo(String departNo)

    {

       this.departNo = departNo;

    }

    public void setUserNo(String userNo)

    {

       this.userNo = userNo;

    }

    public void setUserPassword(String userPassword)

    {

       this.userPassword = userPassword;

    }

}

DepartmentEntity类

package entity;

//部门信息实体

public class DepartmentEntity

{

    private String departmentNo = null;

    private String departmentName = null;

 

    public String getDepartmentName()

    {

       return departmentName==null?"":departmentName.trim();

    }

    public String getDepartmentNo()

    {

       return departmentNo==null?"":departmentNo.trim();

    }

    public void setDepartmentName(String departmentName)

    {

       this.departmentName = departmentName;

    }

 

    public void setDepartmentNo(String departmentNo)

    {

       this.departmentNo = departmentNo;

      

    }

}

配置文件:struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

 

<!DOCTYPE struts-config PUBLIC

          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"

          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<!--

     This is the Struts configuration file for the example application,

     using the proposed new syntax.

 

     NOTE:  You would only flesh out the details in the "form-bean"

     declarations if you had a generator tool that used them to create

     the corresponding Java classes for you.  Otherwise, you would

     need only the "form-bean" element itself, with the corresponding

     "name" and "type" attributes.

-->

 

 

<struts-config>

 

  <!-- ========== Form Bean Definitions =================================== -->

    <form-beans>

       <form-bean name="userForm"   type="action.UserForm">

       </form-bean>

       

    </form-beans>

 

 <!-- ========== Global Forward Definitions ============================== -->

  <global-forwards>

 

  </global-forwards>

   

  <!-- ========== Action Mapping Definitions ============================== -->

  <action-mappings>

 

    <action path="/search"

        type="action.UserAction"

            name="userForm"

            scope="request"

            parameter="operate"

       validate="false"

       input="search.jsp">

            <forward name="toSearch" path="/search.jsp"/>

            <forward name="success"  path="/success.jsp"/>

            <forward name="error"    path="/error.jsp"/>

     </action>

    

     <action path="/searchInfo"

        type="action.ResultAction"

            name="userForm"

            scope="request"

       input="search.jsp">

            <forward name="toSearch" path="/search.jsp"/>

            <forward name="success"  path="/success.jsp"/>

            <forward name="error"    path="/error.jsp"/>

     </action>

 

  </action-mappings>

 

</struts-config>

jsp页面

search.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

 

<title>search employee</title>

 

<center>

<html:form action="searchInfo.do" method="post">

<table>

<tr>

    <td>部门</td>

    <td>

    <html:select property="user.departNo">

    <logic:notEmpty name="userForm" property="departs">

    <logic:iterate  name="userForm" property="departs" id="dept" type="entity.DepartmentEntity">

    <html:option value="<%= String.valueOf(dept.getDepartmentNo()) %>"><%= dept.getDepartmentName() %></html:option>

    </logic:iterate>

    </logic:notEmpty>

    </html:select>

    </td>

</tr>

 

<tr>

     <td><html:submit value="提交"/></td>

     <td><html:reset  value="重置"/></td>

</tr>

</table>

</html:form>

</center>

 

   

success.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page language="java"%>

<%@ page import="java.util.*;"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>

      

       <center>

       <table width="80%" border="1">

       <tr>

         <th>用户号 </th>

         <th>所在部门编号</th>

         <th>所在部门名称 </th>

       </tr>

      

           <logic:iterate 

                    name="userForm"

                       property="users"

                       id="ue"

                       type="entity.UserEntity">

                 <tr>

                   <td><%=ue.getUserNo()%></td>

                   <td><%=ue.getDepartNo()%></td>

                   <td><%=ue.getDepartName()%></td>

                 </tr>

          </logic:iterate>

        </table>

        </center>     

      

</html:html>

error.jsp

 

Error!!

 

赶快运行吧

http://localhost:8080/temp3/search.do?operate=toSearch

一点提示:

发现没?运行程序的的时候,在ie地址拦上输入的东西好象不一样了吧?

UserAction中没有execute方法了,换成了toSearch方法。好了,现在我允许你把这个toSearch随便改个名字,就改个myDog好吗?然后再在你的ie上输入:

             http://localhost:8080/temp3/search.do?operate=myDog

哈哈,结果一样哦。

很早该提醒你,但是想看你自己是不太笨:

java程序改动后,要重新保存编译成类。

任何的程序改动或者配置文件改动后,请你重新启动你的tomcat

任何的jsp页面改动后,不需要重新启动tomcat,刷新就可以了

重点在这里:

怎么连接oracle数据库:

1:要导入一个classes12.jar这个JAR包,它提供了oracle数据库的相关驱动

2: strDriver="oracle.jdbc.driver.OracleDriver";

    strConnection="jdbc:oracle:thin:@¥¥¥¥¥:1521:!!!!!";

    strUsername="******";

    strPassword="######";

¥¥¥¥¥:数据库服务器的ip地址

!!!!!:数据库的名称

******:访问数据库的名称

######:访问数据库的密码

如何采用连接池的方式连接数据库

1:在D:/tomcat-4.1.18/conf的server.xml中找到     

</Host> </Engine></Service></Server>

  在这段之前添加添加:

<Context path="/-----" docBase="/------" debug="0" reloadable="true">

              <Resource name="jdbc/%%%" auth="Container" type="javax.sql.DataSource"/>

              <ResourceParams name="jdbc/%%%">

              <parameter>

              <name>username</name>

              <value>******</value>

              </parameter>

              <parameter>

              <name>password</name>

              <value>######</value>

              </parameter>

              <parameter>

              <name>driverClassName</name>

              <value>oracle.jdbc.driver.OracleDriver</value>

              </parameter>

              <parameter>

              <name>url</name>

                <value>jdbc:oracle:thin:@ ¥¥¥¥¥: !!!!</value>

                </parameter>

                <parameter>

                        <name>maxActive</name>

                        <value>30</value>

                </parameter>

                <parameter>

                      <name>maxIdle</name>

                      <value>10</value>

               </parameter>

               <parameter>

                     <name>maxWait</name>

                     <value>5000</value>

               </parameter>

         </ResourceParams>

       </Context>

-----:你要用该连接池的应用工程目录,例如:user

%%%:随便你取个名字,例如:userDB

2:修改你的应用所对应的那个web.xml

在  </web-app>前添加

<resource-ref>

    <description>((((((( </description>

    <res-ref-name> jdbc/%%%</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

  </resource-ref>

</web-app>

(((((((:你高兴写点什么就写点什么

3:这样来使用

还记得你的public class ConnectFactory吗?

改写成下面的样子

package connectDatabase;

import java.sql.*;

import javax.sql.DataSource;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

public class ConnectFactory

{

   

    public static Connection getConnectionByDriver()

             throws MyException

    {  

       DataSource ds;

       Connection conn = null;

       //缓冲池连接

       try

       {

           Context initCtx = new InitialContext();

           Context envCtx = (Context) initCtx.lookup("java:comp/env");

           ds = (DataSource)envCtx.lookup("jdbc/%%%");

         if(ds!=null)

         {

           conn = ds.getConnection();

         }

       }

       catch(NamingException e)

       {

           e.printStackTrace();

       }

       catch(SQLException e1)

       {

           e1.printStackTrace();

       }

       finally {}

       return conn;

    }

}

Java Web框架整合实践:Struts2, Hibernate3.2, Spring2.0 本文还有配套的精品资源,点击获取 简介:Struts2、Hibernate3.2和Spring2.0是Java Web开发的关键框架,通常被整合用于企业级应用。Struts2处理用户请求和展示结果,Hibernate简化数据库操作,而Spring提供依赖注入和面向切面编程。整合这三个框架可以提供强大的MVC解决方案、高效的数据持久化和灵活的事务管理。本文将探讨这三个框架的整... 阅读详情

相关推荐

构建基于Struts和Hibernate的新闻系统实战教程

本文还有配套的精品资源,点击获取 简介:在Java Web应用开发中,Struts和Hibernate是构建数据驱动应用程序的关键框架。Struts实现MVC模式,处理用户请求和业务逻辑,Hibernate提供ORM支持简化数据库交互。本教程深入探讨这两个框架在新闻系统中的应用,涵盖从系统架构到前后端交互的各个细节,并注重解决常见的浏览器兼容性问题。 1. Strut...

weixin_30923011的博客 1122

struts操作数据库 -一个简单的例子

数据库编程的一些基本步骤:注册驱动创建数据库连接执行SQL语句获得结果要用到的一些基本类Connection类Statement类和PeparedStatement类ResultSet类要注意的问题数据库操作的时候会出现异常,要注意捕获并处理用以下的代码做解释//定义数据库的驱动程序(以下给出的是连接odbc数据库的) String strDriver=

samlover的专栏 1778

Struts框架 用户登录系统 连接MYsql数据库

基于Struts框架 ,用户登录系统, 连接MYsql数据库。 里面包含有struts框架的搭建配置文档。 适合新手学习。

Struts1入门系列一(Struts原理详解)

一、Struts简介  1、软件的三层结构      表现层:主要是JSP和HTML页面,用于接收用户的请求,以及返回操作数据,是应用程序访问的入口。      业务逻辑层:主要是对数据库的操作,对数据业务逻辑进行处理。如果说数据层是积木,那么逻辑层的工作就是对这些积木的搭建。      数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文

yyyyyyyyyyyy 652

Struts完整项目(含数据库)

Struts项目(含数据库),下载后浏览下文档即可试用,数据库部分有sql2000、MySQL

SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,提升了不可预测的网络环境上的流传输性能。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。 S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。 在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的

罗宇。的媒体技术工作室 1万+

19、秒杀子模块搭建、商家维护秒杀商品列表实现、springTesk的demo、定时任务将秒杀添加到redis、商品从redis中获取、前端秒杀倒计时、秒杀下单保存到数据库、子线程保存数据库、超卖问题

秒杀子模块搭建 商家维护秒杀商品列表实现 springTesk的demo 定时任务将秒杀添加到redis 商品从redis中获取 前端秒杀倒计时 秒杀下单保存到数据库 子线程保存数据库 超卖问题 验证秒杀订单保存数据库减少秒杀商品数量的演示 ...

weixin_43421537的博客 664

k8s集群部署私有镜像仓库

本文介绍了在Kubernetes集群中部署私有镜像仓库的完整方案。使用registry:2镜像创建Deployment,通过NodePort(30500)暴露服务,并采用hostPath(/data/registry)实现数据持久化。部署过程包括节点标记、YAML配置、资源创建及验证步骤,同时提供了Docker和Containerd两种环境下的详细使用方法,包括配置不信任私有仓库、镜像推送/拉取操作指南。该方案特别适合开发测试环境,为团队提供便捷的本地镜像管理能力。

weixin_42728286的博客 893

lucene全文检索应用示例及代码简析

  Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包及架构,提供了完整的查询引擎和索引引擎,实现了一些通用的分词算法,预留很多词法分析器接口。本文以myrss.easyjf.com网站系统中使用Lucene实现全文检索的代码为例,简单演示Lucene在实际项目中的应用。  使用Lucene实现全文检索,主要有下面三个步骤:  1、建立索引

蔡世友-重出江湖 4514

使用单片机和电流互感器对非正弦周期电流有效值测定

使用单片机和电流互感器,利用一种高速采样的方法来进行有效值测定

月光绿叶滴水音乐 3945

ROS从入门到精通2-1:机器人3D可视化工具——Rviz

本文详细介绍了Rviz是什么?为什么要使用这个工具?清晰地列出了Rviz的安装流程和界面的基本功能元素;讲解了Rviz基本数据类型与话题,并用两个实例深入理解Rviz数据可视化的过程

FRIGIDWINTER的博客 5346

Ajax的基本使用

Ajax的基本使用,无刷新登录,使用Ajax实现搜索自动提示

weixin_67235801的博客 8098

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

2022 Java 企业面试题汇总

2022 Java企业面试题汇总覆盖了:Java 基础部分、前端、Javaweb 部分、框架部分、数据库、webservice、设计模式、Linux等最新面试题和答案。

Jerry学长 159

KylinOS 离线安装 MinIO【图文步骤】

在国产操作系统 KylinOS 中安装 MinIO,详细步骤...

甘蓝的专栏 1536

Python 爬虫实战:爬取国家统计局公开数据

国家统计局作为权威的宏观经济数据发布机构,汇聚了人口、GDP、就业、产业经济等多维度的核心统计数据,是开展经济研究、政策分析、行业洞察的重要数据支撑。相较于商业数据平台,国家统计局的公开数据具备权威性、全面性和时效性等特点,但部分数据分散在不同栏目且缺乏结构化下载渠道。本文基于 Python 爬虫技术,系统讲解国家统计局公开数据的爬取方法,重点解决静态表格解析、分页数据抓取、数据结构化转换等问题,同时严格遵循政府网站数据使用规范,为科研、教学等场景提供合规的数据获取方案。本文以国家统计局官网(

2503_91057718的博客 1818

hibernate的映射关系配置及对会话工厂的初始化。以及struts2写实例查询

1.首先获取hibernate的jar导入,不写。 2.hibernate关键配置映射文件有两个,关键工具一个 分别是: 核心配置 hibernate.cfg.xml 持久化类对象与数据库映射配置*.hbm.xml hibernate会话工厂初始化,会话管理工具 核心配置文件hibernate.cfg.xml `配置,在src目录 <?xml version="1.0" encoding...

博客 272

【教程4>第2章>第18节】 GMSK调制系统的FPGA开发与matlab对比验证

GMSK(高斯最小频移键控)是一种连续相位的频移键控(CPFSK)调制方法,它在数字通信中得到了广泛应用,特别是在移动通信系统中。GMSK通过限制频率偏差的累积来减少带外辐射,并通过使用高斯滤波器对。

FPGA/MATLAB学习教程/源码/项目合作开发 998

Java抽象工厂实战:多数据库与支付渠道的解耦方案

抽象工厂是一种面向对象的设计模式,用于创建一系列相互关联或依赖的对象,而无需指定具体类。其核心在于定义产品族契约,确保同厂产出的组件天然兼容、类型安全、协同一致。在Java工程中,它通过抽象产品接口、具体实现类和抽象工厂接口三层结构,实现开闭原则与高内聚低耦合。相比简单工厂和工厂方法,抽象工厂特别适用于多数据库(MySQL/PostgreSQL)、多支付渠道(支付宝/微信/PayPal)等‘产品族切换’场景,显著降低扩展成本与运行时异常风险。本文结合Spring Boot集成、泛型强化、线程上下文隔离等生产

keke1314520的博客 341

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Struts处方:Hibernate与Struts

Struts处方:Hibernate与Struts在struts应用程序里加入Hibernate作者:George Franciscus and Danilo Gurovich译者:KateLin(E-mail: katelin2004@hotmail.com)版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:George;Danilo;KateLin原文地址

陈杰的专栏 1660

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Struts+Hibernate入门实例(Eclipse版)

  选择自 woolceo 的 Blog 二、相关概念与工具介绍下面我将分别对本文“三大主角”所涉及到相关概念进行说明。Hibernate及相关知识介绍Hibernate:中文意思是"冬眠“,呵呵,不知道设计者为何用这个名字。它是一个开源的ORM框架(关于ORM下文还会讲解),它是通过对JDBC API进行封装从而实现对java对象持久化的。有人可能要问:JDBC其实不难操作,为什么还要封装它哪?

my_sunway的专栏 1520

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Struts+Hibernate+Spring

Struts struts是一个按MVC模式设计的Web层框架,实质是一个强大的Servlet。负责处理请求转发和路由。 struts的基本配置文件为struts-config.xml,里面配置了很多Action、ActionForm及中转规则,这个文件通过web.xml中的ActionServlet进行加载和初始化。 当用户请求发送到服务器端时,ActionServlet会接收到此请求,然后根...

qq_41973925的博客 336

体会真正的Struts开发(2期)

体会真正的Struts开发(第2期)杨恒贤(yanghx@70345.com) 上一篇讲到测试Hibernate操作数据库,今天我们来利用Struts与Hibernate作一个Web实例。 工程卡日期2004-3-20 21:00工作环境配置及其测试执行者杨恒贤时间(估计)2小时

优美弧度 869

struts整合spring整合hibernate

1, web.xml中配置spring监听类    org.springframework.web.context.ContextLoaderListener   2,需要一个struts2-spring-plugin.jar 3,srping整合hibernate  配置数据库连接  Session工厂

itmyhome的专栏 1763

struts mysql 增删改查_struts2+dao实现增删查改

一、数据库设计:/*NavicatMySQLDataTransferSourceServer:localhostSourceServerVersion:50611SourceHost:localhost:3306SourceDatabase:mldnTargetServerType:MYSQLTargetServerVersion:50611FileEncoding:65001Date:2013-...

weixin_34526152的博客 196

Struts、spring、hibernate、EJB、ant术语说明

                              Struts、spring、hibernate、EJB、ant术语说明Struts Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供

yzc的专栏 1296
上一篇: java文件操作大全
下一篇: 最全面的wma歌曲免费下载
samlover
博客等级 码龄25年 0粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值