详解Java的Struts框架中上传文件和客户端验证的实现

文件上传

Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传。上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失。

请注意,服务器有一个安全策略可能会禁止写到目录以外的临时目录和属于web应用的目录。

在Struts中的文件上传是通过预先定义的拦截文件上传拦截器这是可通过org.apache.struts2.interceptor.FileUploadInterceptor类的defaultStack中的一部分。仍然可以使用在struts.xml中设置各种参数,我们将在下面看到。

创建视图文件:
让我们开始创建我们认为这将需要浏览和上传选定的文件。因此,让我们创建一个纯HTML上传表单,允许用户上传文件 index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>File Upload</title>
</head>
<body>
  <form action="upload" method="post" enctype="multipart/form-data">
   <label for="myFile">Upload your file</label>
   <input type="file" name="myFile" />
   <input type="submit" value="Upload"/>
  </form>
</body>
</html>

在上面的例子中值得注意几点说明。首先,表单的enctype属性设置为multipart/ form-data。这应该是设置为使得处理文件上传文件上传。下一个点值得注意的是表单的 action方法上传和文件上传字段的名称 - myFile。我们需要这些信息创建操作方法和struts配置。

接下来让我们创建一个简单的 jsp 文件的success.jsp 结果显示我们的文件上传的情况下成功。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>File Upload Success</title>
</head>
<body>
You have successfully uploaded <s:property value="myFileFileName"/>
</body>
</html>

下面将结果文件error.jsp 可能会有一些错误,在上传文件:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>File Upload Error</title>
</head>
<body>
There has been an error in uploading the file.
</body>
</html>

创建action类:
接下来让我们创建一个Java类称为 uploadFile.java 这会处理上传文件,该文件存储在一个安全的位置:

package com.yiibai.struts2;

import java.io.File;
import org.apache.commons.io.FileUtils;
import java.io.IOException; 

import com.opensymphony.xwork2.ActionSupport;

public class uploadFile extends ActionSupport{
  private File myFile;
  private String myFileContentType;
  private String myFileFileName;
  private String destPath;

  public String execute()
  {
   /* Copy file to a safe location */
   destPath = "C:/apache-tomcat-6.0.33/work/";

   try{
    System.out.println("Src File name: " + myFile);
    System.out.println("Dst File name: " + myFileFileName);

    File destFile = new File(destPath, myFileFileName);
   FileUtils.copyFile(myFile, destFile);

   }catch(IOException e){
     e.printStackTrace();
     return ERROR;
   }

   return SUCCESS;
  }
  public File getMyFile() {
   return myFile;
  }
  public void setMyFile(File myFile) {
   this.myFile = myFile;
  }
  public String getMyFileContentType() {
   return myFileContentType;
  }
  public void setMyFileContentType(String myFileContentType) {
   this.myFileContentType = myFileContentType;
  }
  public String getMyFileFileName() {
   return myFileFileName;
  }
  public void setMyFileFileName(String myFileFileName) {
   this.myFileFileName = myFileFileName;
  }
}

uploadFile.java是一个非常简单的类。重要的是要注意的是使用FileUpload拦截器随着参数Intercetpor 确实为我们解决所有繁重工作。文件上传拦截器,使三个参数,默认情况下提供。它们被命名为以下模式:

[your file name parameter] - 这是实际的文件的上载。在这个例子中是 "myFile"

[your file name parameter]ContentType - 这是被上传的文件,该文件的内容类型。在这个例子中是 "myFileContentType"

[your file name parameter]FileName - 这是被上传的文件的名称。在这个例子中是 "myFileFileName"

这三个参数是为我们提供的,这要归功于Struts的拦截器。所有我们需要做的是在我们的Action类,这些变量是自动连线我们以正确的名称创建三个参数。所以,在上面的例子中,我们有三个参数的操作方法简单地返回“success”,如果一切顺利,否则返回“error”。

配置文件:
以下是Struts2的配置属性可以控制文件上传过程:

为了改变这些设置,可以使用恒定的标签在应用程序 struts.xml文件,像我一样改变要上传的文件的最大大小。让我们有我们的在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>
  <constant name="struts.devMode" value="true" />
  <constant name="struts.multipart.maxSize" value="1000000" />

  <package name="helloworld" extends="struts-default">
  <action name="upload" class="com.yiibai.struts2.uploadFile">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
  </action>
  </package>
</struts>

由于FileUpload拦截器是拦截器defaultStack的一部分,我们并不需要明确地配置。但可以添加<interceptor-ref>标签到<action>里面。文件上传拦截器需要两个参数:(a)maximumSize及(b)allowedTypes。maximumSize参数设置允许的最大文件大小(默认为约2MB)。allowedTypes参数接受的内容是一个逗号分隔的列表(MIME)类型,如下所示:

  <action name="upload" class="com.yiibai.struts2.uploadFile">
    <interceptor-ref name="basicStack">
    <interceptor-ref name="fileUpload">
      <param name="allowedTypes">image/jpeg,image/gif</param>
    </interceptor-ref>
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
  </action>

以下是web.xml文件中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  id="WebApp_ID" version="3.0">

  <display-name>Struts 2</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.FilterDispatcher
   </filter-class>
  </filter>

  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

现在右键点击项目名称,并单击 Export > WAR File 创建一个WAR文件。然后部署此WAR在Tomcat 的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/upload.jsp。这会给出以下画面:

现在选择一个文件的“Contacts.txt”使用“浏览”按钮,然后点击上传按钮,将文件上传,应该看到页面。可以检查上传的文件保存在 C:apache-tomcat-6.0.33work.

请注意,使用FileUpload拦截删除上传的文件自动所以需要编程在一些位置上保存上传的文件被删除之前。

错误消息:
fileUplaod拦截器使用几个默认的错误消息键:

验证框架

现在,我们将看看如何的Struts验证框架。在Struts的核心有验证框架,协助应用程序的运行规则来执行验证执行之前的操作方法。

通常是使用Javascript来实现客户端验证。但不应单独依赖于客户端验证。最佳实践表明,验证应引入各级应用程序框架。现在,让我们来看看两种方式添加验证我们的Struts项目。

在这里,我们将采取一个例子,Employee 将被捕获的姓名和年龄使用一个简单的页面,我们将会把两个验证,以确保使用总是进入一个名字和年龄应该是在28和65之间。所以,让我们先从主JSP页面的例子。

创建主页面:
让我们写主JSP页面文件的index.jsp,这将被用来收集上述员工的相关信息。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Employee Form</title>
</head>

<body>
  <s:form action="empinfo" method="post">
   <s:textfield name="name" label="Name" size="20" />
   <s:textfield name="age" label="Age" size="20" />
   <s:submit name="submit" label="Submit" align="center" />
  </s:form>
</body>
</html>

在index.jsp使用Struts的标签,我们还没有涉及,但我们将研究这些标签相关的章节。但现在,假设 s:textfield 标签打印一个输入字段s:submit打印一个提交按钮。我们已经使用label属性标签,每个标签每个标签创建。

创建视图:
我们将使用JSP文件的success.jsp将调用的情况下定义的动作返回SUCCESS。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Success</title>
</head>
<body>
  Employee Information is captured successfully.
</body>
</html>

创建动作:
因此,让我们定义一个小小的动作类Employee,然后添加一个方法称为validate(),如下所示在Employee.java文件。请确保操作类扩展ActionSupport类,否则validate方法将不会被执行。

package com.yiibai.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Employee extends ActionSupport{
  private String name;
  private int age;

  public String execute()
  {
    return SUCCESS;
  }
  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;
  }

  public void validate()
  {
   if (name == null || name.trim().equals(""))
   {
     addFieldError("name","The name is required");
   }
   if (age < 28 || age > 65)
   {
     addFieldError("age","Age must be in between 28 and 65");
   }
  }
}

如在上面的例子所示,“Name”字段的验证方法检查是否有一个值,或不。如果没有值已经提供,我们添加一个带有自定义错误消息“Age”字段的字段错误。其次,我们检查,如果输入的值是在28和65之间或不为“Age”字段,如果这个条件不符合我们以上验证字段添加一个错误。

配置文件:
最后,让我们把所有东西一起使用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>
  <constant name="struts.devMode" value="true" />
  <package name="helloworld" extends="struts-default">

   <action name="empinfo"
     class="com.yiibai.struts2.Employee"
     method="execute">
     <result name="input">/index.jsp</result>
     <result name="success">/success.jsp</result>
   </action>

  </package>

</struts>

以下是web.xml文件中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  id="WebApp_ID" version="3.0">

  <display-name>Struts 2</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.FilterDispatcher
   </filter-class>
  </filter>

  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

现在,右键点击项目名称,并单击Export > WAR File创建一个WAR文件。然后部署此WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。这会给出以下画面:

现在不输入任何所需信息,只需点击“Submit ”按钮。将看到以下结果:

输入所需的信息,但输入了错误的From字段,让我们说“test”和年龄为30,最后点击“Submit ”按钮。将看到以下结果:

此验证是如何工作的?
当用户按下提交按钮时,Struts2会自动执行的验证方法,如果任何一个if语句里面的方法列出,Struts 2调用addFieldError方法。如果有任何错误已加入Struts 2将不会进行调用execute方法。而Struts 2框架将返回输入作为调用该行动的结果。

因此,验证失败时Struts2返回输入,Struts 2框架将重新显示index.jsp文件。因为我们使用了Struts 2的表单标签,Struts2中会自动添加错误消息,只是上面的形式提交。

这些错误消息是我们addFieldError方法调用中指定的。addFieldError方法有两个参数。首先是表单字段名错误,第二个是错误信息,上面显示该表单字段。

addFieldError("name","The name is required");

要处理的返回值输入,我们需要添加以下的结果,以我们的动作节点在struts.xml。

<result name="input">/index.jsp</result>

基于XML的验证:
在进行验证的第二个方法是通过将一个xml文件的动作类。Struts2的基于XML验证的验证提供了更多的选择,如电子邮件验证,整数范围验证,表单验证字段,表达式验证,正则表达式验证,需要验证,验证所需的字符串,字符串长度的验证等。

XML文件需要被命名为'[action-class]'-validation.xml。所以,在我们的例子中,我们创建一个文件,名为 Employee-validation.xml包含以下内容:

<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
  <field name="name">
   <field-validator type="required">
     <message>
      The name is required.
     </message>
   </field-validator>
  </field>

  <field name="age">
   <field-validator type="int">
     <param name="min">29</param>
     <param name="max">64</param>
     <message>
      Age must be in between 28 and 65
     </message>
   </field-validator>
  </field>
</validators>

上面的XML文件会被保存在CLASSPATH 沿着类文件。让我们有我们的雇员动作类没有validate()方法如下:

package com.yiibai.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Employee extends ActionSupport{
  private String name;
  private int age;

  public String execute()
  {
    return SUCCESS;
  }
  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;
  }
}

其余的设置将保持,因为它是我前面的例子,现在,如果运行应用程序,它会产生相同的结果是什么,我们在前面的例子:

xml文件来存储配置的优点是允许的验证从应用程序代码的分离。可以让开发人员编写的代码和业务分析师建立验证xml文件。要注意的是另一件事是默认提供的验证类型。有大量的验证,默认情况下,使用Struts。常见的验证包括验证日期,正则表达式验证字符串长度的验证。检查以下链接更多细节 Struts - 基于XML的校验.

(0)

相关推荐

  • struts2+jquery组合验证注册用户是否存在

    注册界面 register.jsp 复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>注册界面</title> <script type="text/javascript" src="js/jquery-1.6.js"

  • Ajax+Struts2实现验证码验证功能实例代码

    众所周知,验证码在我们的生活中都是非常常见的,很多公司都在各种折腾各种各样的验证码,这里简要的用一个小案例来实现验证码的功能(ps:其实我挺讨厌验证码这个东西的). 今天分享的是通过ajax来动态的验证验证码输入是否正确.我们这里采用的是ajax+struts2来做的这个验证. 我们新建一个web工程.然后需要导入struts的相应包.之后我们需要写一个类来生成验证码. 这里命名为01_image.jsp,这类的主要功能就是生成验证码,里面是各种画线条,随机数字等,我这里设置的是5个数字的验证,

  • Struts2之Validator验证框架的详细介绍

    Struts2中提供了数据校验验证数据例如验证邮件.数字等.验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方式. 一.初始化 首先定义一个User类 package com.cyw.test; import java.util.Date; public class User { private String name; private int age; private String email; public String getName() { return n

  • 使用struts2+Ajax+jquery验证用户名是否已被注册

    推荐阅读:JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册 在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,今天正好写了这个需求,把详细代码和所遇到的问题贴过来.在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面的例子,我们只希望返回一个1和0有助于进行后续判断即可,没必要返回json类型,返回一个text字符串就可以了. regist.jsp(这里只提供<script>部分): <script type

  • Struts2中Action三种接收参数形式与简单的表单验证功能

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的Action接收参数的形式,直接在我们的Action类中添加成员变量,这样就可以完成Action接收参数的操作,具体内容详见代码展示: 这里我们以登录验证为例,进行代码展示,首先是我们的Action类: /*** * 最基本的接收参数形式 * @author jho * http://localhos

  • Struts2数据输入验证教程详解

    一.前言 1.1.什么是输入验证?为什么需要输入验证? 在上一篇文章中,我们学习了数据类型转换,我们提到了表示层数据处理的两个方法,也提到了用户输入数据需要进行类型转换才能得到我们想要的数据,那么,我们怎么确定类型转换后的数据,是我们想要的数据呢?这里有点绕.你可以这样想:一个成年男子年龄是18岁,你现在想要得到18这个数据,但是,用户输入32,经过类型转换也是对的,但是数据不是你想要的.这时候,我们要怎么办?所以输入验证在这里就有用处了. 类型转换和输入验证的关系是:类型转换是输入验证的前提,

  • jquery struts 验证唯一标识(公用方法)

    步骤一 引入js文件 复制代码 代码如下: <script language="javascript1.2" src="<s:url value="/js/jquery.js" includeParams="false"/>"></script> <script language="javascript1.2" src="<s:url value=&

  • struts2与cookie 实现自动登录和验证码验证实现代码

    主要介绍struts2与cookie结合实现自动登录 struts2与cookie结合时要注意采用.action 动作的方式实现cookie的读取 struts2的jar包  链接数据库文件 db.properties dbDriver = oracle.jdbc.driver.OracleDriver url = jdbc:oracle:thin:@localhost:1521:orcl userName=test password=password dao层类代码,通过登录名获取用户信息 p

  • Struts2实现生成动态验证码并验证实例代码

     一.基本流程: 产生一个验证码页面(很小)→嵌入到表单中→点击可以刷新页面→表单提交时验证. 二.方法: 1.定义TestAction,实现画图方法 package com.zhuguang.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Map; import javax.se

  • 详解Java的Struts框架中上传文件和客户端验证的实现

    文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失. 请注意,服务器有一个安全策略可能会禁止写到目录以外的临时目录和属于web应用的目录. 在Struts中的文件上传是通过预先定义的拦截文件上传拦截器这是可通过org.apache.struts2.interceptor.FileUploadInterceptor类的defaultStack

  • 详解Java的Struts框架以及相关的MVC设计理念

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品. Struts发展历史 Struts是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages.servlet.标签库以及面

  • 详解Java的Struts框架中栈值和OGNL的使用

    值栈: 值栈是一个集合中的几个对象保持下列对象提供的顺序: 值栈可以通过JSP,Velocity或者Freemarker的标签.有各种不同的标签在单独的章节中,我们将学习,用于获取和设置Struts 2.0 的值栈. ValueStack的对象里面可以得到动作如下: ActionContext.getContext().getValueStack() 一旦拥有了值对象,就可以用下面的方法来操纵该对象: OGNL: 对象图形导航语言(OGNL)是一个功能强大的表达式语言是用来参考值栈上的数据和操纵

  • 详解Java的Struts框架中注释的用法

    要开始在你的项目中使用注释,确保WebContent/WEB-INF/lib文件夹中的jar文件包括以下: struts2-convention-plugin-x.y.z.jar asm-x.y.jar antlr-x.y.z.jar commons-fileupload-x.y.z.jar commons-io-x.y.z.jar commons-lang-x.y.jar commons-logging-x.y.z.jar commons-logging-api-x.y.jar freemar

  • 详解Spring Boot中PATCH上传文件的问题

    Spring Boot中上传multipart/form-data文件只能是Post提交,而不针对PATCH,这个问题花了作者26个小时才解决这个问题,最后不得不调试Spring源代码来解决这个问题. 需求:在网页中构建一个表单,其中包含一个文本输入字段和一个用于文件上载的输入.很简单.这是表单: <form id="data" method="PATCH" action="/f" > <input type="tex

  • 详解Java的Struts2框架的结构及其数据转移方式

    Struts2的结构 1.为什么要使用框架? (1)框架自动完成了很多琐屑的任务 对于Struts2来说,它帮助我们方便地完成了数据类型转换.数据验证.国际化等等 Web开发中常见的任务.还有Spring中大量使用的Template模式,都是在让我们的开发 过程更加自动化.智能化.使用框架就是避免重新发明轮子,重新复制这些模板代码. 框架让我们将精力更多地放在更高级别的问题上,而不是常见工作流和基础任务上. (2)使用框架就是优雅地继承了框架背后的架构 框架背后的架构通常定义了一系列的工作流程,

  • 详解Java的MyBatis框架中SQL语句映射部分的编写

    1.resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/mana

  • 详解Java单元测试Junit框架实例

    问题: 1.目前测试存在的问题 2.Junit注意的细节 3.Junit使用规范 4.断言 5.案例 junit(单元测试框架) 1.目前存在的问题 1.目前的测试方法如果需要测试,都需要在main方法上调用 2.目前的结果都需要我们人工比对 2.Junit 注意的细节 1.如果使用junit测试一个方法的时候,在junit窗口上显示绿色那么表示测试正确,如果显示了红色,则代表该方法测试出现了异常不通过 2.如果点击方法名.类名.包名.工程名运行junit分别测试的是对于的方法,类.包中的所有类

  • 详解Java的Spring框架中的事务管理方式

    数据库事务是被当作单个工作单元的操作序列.这些操作要么全部完成或全部不成功.事务管理是面向企业应用程序,以确保数据的完整性和一致性RDBMS中的重要组成部分.事务的概念可以用下面的描述为ACID四个关键属性来描述: 原子性: 一个事务应该被视为单个操作单元表示的操作的任一整个序列是成功的或不成功的. 一致性: 这代表了数据库的参照完整性,在桌等唯一主键的一致性 隔离性: 可能有很多事务处理相同的数据集的同时,每个事务都应由他人隔离,以防止数据损坏. 持久性: 一旦事务完成,本次事务的结果必须作出

  • 详解Java的MyBatis框架中动态SQL的基本用法

    有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql.下文均采用mysql语法和函数(例如字符串链接函数CONCAT). selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的select

随机推荐