`
esffor
  • 浏览: 1370771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

几个错误的解决关键

阅读更多
导读:
  1、
  org.springframework.orm.ObjectRetrievalFailureException: Object of class [com.xindeco.myregister.pojo.MyRegisterInfo] with identifier [14]: not found
  MyRegisterInfo在数据库没有identifier [14]对象。
  2、
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.xindeco.myregister.pojo.MyRegisterInfo column: password (should be mapped with insert="false" update="false")
  出错原因:password 和repassword同时对应数据库表中的password一列,同时update和insert都设为true。
  xml文件如下:
  <property name="password" <br="">type="java.lang.String"
update="true"
insert="true"
access="property"
column="password"
length = "32"
/>  type="java.lang.String"
  update="true"
  insert="true"
  access="property"
  column="password"
  length = "32"
  />
  <property name="repassword" <br="">type="java.lang.String"
update="false"
insert="false"
access="property"
column="password"
length = "32"
/>  type="java.lang.String"
  update="false"
  insert="false"
  access="property"
  column="password"
  length = "32"
  />
  解决的方法:
  将repassword的insert和update设为false。
  3、
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed;
  nested exception is org.hibernate.PropertyNotFoundException: Could not find a getter for ID in class
  错误原因:hibernate的映射文件中ID是大写的,而pojo的类中id是小写的
  注意事项:每个pojo的类都要继承abstractEntity,其中abstractEntity类有个ID的属性要重写
  public abstract class AbstractEntity
  implements Entity, BaseDTO {
  abstract public long getID();
  abstract public void setID(long id);
  public int hashCode() {
  return (int)this.getID();
  }
  public boolean equals(Object obj) {
  if (obj == this) {
  return true;
  }
  if (obj instanceof Entity) {
  return this.getID() == ( (Entity) obj).getID();
  }
  return false;
  }
  }
  4、
  org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition
  错误原因:
  在application.xml文件中deleteRegister方法以delete开头,并没有被设定为可更改的,应如下设置:
  
  <bean class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true" lazy-init="true" id="baseTxProxy">
  <property name="transactionManager">
  <ref bean="transactionManager">
  </ref></property>
  <property name="transactionAttributes">
  <props>
  <prop key="add*">PROPAGATION_REQUIRED</prop>
  <prop key="cancel*">PROPAGATION_REQUIRED</prop>
  </props>
  </property>
  </bean>
  加上一行
  <prop key="delete*">PROPAGATION_REQUIRED</prop>
  5、
  ERROR org.apache.struts.util.RequestUtils - Error creating form bean of class com.xindeco.business.web.form.GraAppInfoForm
  public class GraAppInfoForm
  extends ActionForm 错误写成
  public abstratic class GraAppInfoForm
  extends ActionForm
  6、
  2006-04-25 08:56:38,495 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@8e2fb5
  java.lang.ClassCastException: $Proxy0
  at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:30)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:585)
  at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
  at com.xindeco.core.web.action.BaseAction.dispatchMethod(BaseAction.java:153)
  at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
  actioin类中的newone方法如下:
  public class GraAppAction
  extends BaseAction {
  public ActionForward newone(ActionMapping mapping, ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) throws Exception {
  GraAppService graservice = (GraAppService) this.getBean("GraAppService");
  }
  applicationcontext中的GraAppService的配置如下:
  <bean class="com.xindeco.business.dao.impl.GraAppDAOImpl" id="GraAppDAO">
  <property name="support">
  <ref local="support">
  </ref></property>
  <property name="sessionFactory">
  <ref local="sessionFactory">
  </ref></property>
  </bean>
  <bean id="GraAppService" parent="baseTxProxy">
  <property name="target">
  <bean autowire="byName" class="com.xindeco.business.service.impl.GraAppServiceImpl">
  <property name="baseDAO">
  <ref bean="GraAppDAO">
  </ref></property>
  </bean>
  </property>
  </bean>
  因此this.getBean("GraAppService");是为了得到GraAppServicImpl类的实现。GraAppService是interface
  public class GraAppServiceImpl extends BaseServiceImpl
  implements GraAppService{
  }
  7、org.hibernate.hql.ast.QuerySyntaxException: Demand is not mapped. [from Demand where unitid = ? and needNum >usedNeedNum]
  hibernate.cfg.xml没有配置Demand.hbm.xml文件的目录
  8、org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: 列名 'id' 无效。
  java.sql.SQLException: 列名 'name' 无效。
  因为hibernate声明的id,name的columnid属性没有与数据库的字段对应,所以id,name无效。
  9、java.lang.NumberFormatException: null
  at java.lang.Integer.parseInt(Integer.java:415)
  at java.lang.Integer.parseInt(Integer.java:497)
  at com.xindeco.business.service.impl.DemandServiceImpl.findDemandListByUnitId(DemandServiceImpl.java:33)
  错误语句为
  needNum = Integer.parseInt(demand.getNeedNum());
  usedNeedNum = Integer.parseInt(demand.getUsedNeedNum());
  因为demand.getUsedNeedNum()==null,无法转化为string 类型,
  10、rg.apache.jasper.JasperException: /GraAppInfo/GraAppInfoNew.jsp(343,29) According to TLD, tag bean:write must be empty, but is not
  错误的原因:
     请选择   <logic:notempty name="politicsList">   <logic:iterate name="politicsList" id="politics">   </logic:iterate></logic:notempty>   ? property="codeID"></bean:write><bean:write name="politics" property="codeName">      </bean:write>
  就因为少了/>
  以后懂得通过查找字数,来检查错误
  11、2006-04-26 13:27:54,812 ERROR com.xindeco.core.util.BeanUtils - bean property [Nation] copy failed
  com.xindeco.core.exception.ConvertException: org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.lang.String; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.String
  beanUtil.beanCopy(grapojo,form,BizConstants.CONVERTER);
  要求:
  1、pojo类的属性只有与form属性名字相同,才能beancopy成功
  2、pojo中属性是实体,在form中一定要用int,long表示
  出现这错误的原因是pojo中的属性不是实体,而错误写成:
  string
  private String nation;应改成 private Syscode nation;
  12、
  2006-04-26 14:38:37,843 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@fa1b2d
  java.lang.NullPointerException
  at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:43)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  hibernate配置文件没改,程序找不到相应的类
  <many-to-one <br="">name="FSUnit"
class="com.xindeco.business.pojo.EmployUnitBaseInfo"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="fSUnit"
/>  name="FSUnit"
  class="com.xindeco.business.pojo.EmployUnitBaseInfo"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="fSUnit"
  />
  其实FSUnit对应的类应该是FSUnit
  <many-to-one <br="">name="FSUnit"
class="com.xindeco.business.pojo.FSUnit"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="fSUnit"
/>  name="FSUnit"
  class="com.xindeco.business.pojo.FSUnit"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="fSUnit"
  />
  13、
  org.hibernate.MappingException: An association from the table GraAppInfo refers to an unmapped class: com.xindeco.business.pojo.FSUnit
  错误原因:hibernate.cfg.xml没有配置fsunit.hbm.xml文件的位置
  14、
  java.lang.ClassCastException: com.xindeco.business.dao.impl.GraAppDAOImpl
  at com.xindeco.business.service.impl.GraAppServiceImpl.addGraduateApp(GraAppServiceImpl.java:16)
  GraAppServiceImpl.java:16
  第16行: GraAppDAO dao = (GraAppDAO) this.getBaseDAO();//其实得到的是GraAppDAOImpl
  错误的原因是
  public class GraAppDAOImpl
  extends BaseDAOImpl {
  }
  没有实现GraAppDAO接口,正确的做法是
  public class GraAppDAOImpl
  extends BaseDAOImpl implements GraAppDAO {
  }
  先继承后实现
  15、2006-04-27 08:38:54,078 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@1d6399b
  java.lang.ClassCastException: com.xindeco.business.pojo.SysCode
  at org.hibernate.type.StringType.set(StringType.java:26)
  at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63)
  at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:40)
  一般是因为hibernate声明类型和pojo类声明的类型不一样,并且前面已经出现了Hibernate: insert into TGraAppInfo (name, whereFrom, degree, college, speciality, studentRelTel, remark, higherEduLength, highSchool, studyResume, normalOrNot, proxyUnit, workPost, workPlace, studentAddress, studentPostNumber, nation, appStatus) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
  的操作提示,查出错误的原因有:
  <many-to-one <br="">name="demand"
class="com.xindeco.business.pojo.Syscode"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="demandID"
/>  name="demand"
  class="com.xindeco.business.pojo.Syscode"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="demandID"
  />
  <property <br="">name="appStatus"
type="int"
update="true"
insert="true"
access="property"
column="appStatus"
length="10"
/>  name="appStatus"
  type="int"
  update="true"
  insert="true"
  access="property"
  column="appStatus"
  length="10"
  />
  应改为
  <many-to-one <br="">name="demand"
class="com.xindeco.business.pojo.Demand"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="demandID"
/>  name="demand"
  class="com.xindeco.business.pojo.Demand"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="demandID"
  />
  <many-to-one <br="">name="nation"
class="com.xindeco.business.pojo.SysCode"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="nation"
/>  name="nation"
  class="com.xindeco.business.pojo.SysCode"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="nation"
  />
  16、
  org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.xindeco.business.pojo.SysCode
  at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:626)
  at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:570)
  at
  org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:482)
  pojo类为:
  public class GraAppInfo{
  private College college;
  }
  action 类为
  public class GraAppAction
  extends BaseAction {
  public ActionForward add(ActionMapping mapping, ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) throws Exception {
  graInfo.setCollege(new College());\\必须从数据库找到college这个对象,而不能新生成
  graInfo.getCollege().setID(graForm.getCollegeID());
  graInfo.setAppStatus(Integer.parseInt("0"));
  service.addGraduateApp(graInfo);
  }
  public class GraAppServiceImpl extends BaseServiceImpl
  implements GraAppService{
  public boolean addGraduateApp(GraAppInfo info)
  {
  this.getBaseDAO().save(info);
  return true;
  }
  }
  dao类save方法为
  getHibernateTemplate().save(obj);
  当cascade="all",插入new college 除了id和原来的记录一样,其他的字段全部都被更新,为null
  当cascase=“insert”,插入new college 只会把它的id插入grainfo表中,其他字段不变。
  17、java.sql.SQLException: Unable to convert between java.lang.Integer and BLOB.
  因为
  <property <br="">name="province"
type="com.xindeco.business.pojo.SysCode"//不能用复杂类,
update="true"
insert="true"
access="property"
column="provinceId"
/>  name="province"
  type="com.xindeco.business.pojo.SysCode"//不能用复杂类,
  update="true"
  insert="true"
  access="property"
  column="provinceId"
  />
  应该改为
  <many-to-one <br="">name="province"
class="com.xindeco.business.pojo.SysCode"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="provinceId"
/>  name="province"
  class="com.xindeco.business.pojo.SysCode"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="provinceId"
  />
  18、javax.servlet.jsp.JspException: Cannot create iterator for this collection
  at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:265)
  jsp文件如下:
  <logic:notempty name="graduateList">
  </logic:notempty><logic:iterate name="graduateList" id="graduate">
  
  
  graduateList是一个类,而logic:iterator要求必须是ArrayList,HashSet....这样的集合类,而graduateList中一个属性是ArrayList或HashSet的
  应改为:
  </logic:iterate><logic:notempty name="graduateList" property="items">
  <logic:iterate name="graduateList" property="items" id="graduate">
  
  
  19、2006-05-11 17:13:37,468 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@bc22eb
  org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
  SysUser user= (SysUser) request.getSession().getAttribute(WebConstants.SESSION_USER);
  System.out.println(user.getRole().getRoleName());
  当hibernate session取出数据放到http session时,
  由于sysuser中role的lazy=“true”,所以没有将RoleName放到http session中,当System.out.println(user.getRole().getRoleName());
  时,虽然http session还开着, hibernat seesion已经关闭
  <many-to-one <br="">name="role"
class="com.xindeco.business.pojo.SysRole"
lazy="false"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="roleID"
/>  name="role"
  class="com.xindeco.business.pojo.SysRole"
  lazy="false"
  cascade="none"
  outer-join="auto"
  update="true"
  insert="true"
  access="property"
  column="roleID"
  />
  20、Association references unmapped class: com.xindeco.workflow.WFNode
  因为application.xml文件中没有配置<mapping resource="com/xindeco/workflow/WFNode.hbm.xml">
  系统找不到WFNode
  name = "nodes "
table = "WF_ROLENODES "
lazy = "true "
inverse = "false "
cascade = "none "
sort = "unsorted "
>  name = "nodes "
  table = "WF_ROLENODES "
  lazy = "true "
  inverse = "false "
  cascade = "none "
  sort = "unsorted "
  >
  <key <br="">column = "roleID "
>  column = "roleID "
  >
  <!---->
  <many <br="" many="" -="" to="">class = "com.xindeco.workflow.WFNode "
column = "nodeId "
outer - join = "auto "
/>  class = "com.xindeco.workflow.WFNode "
  column = "nodeId "
  outer - join = "auto "
  />
  <!---->
  12:45 | 永久链接 | 浏览 (184) | 评论 (0) | struts |
  logic:Iterator标签(以下简称“该标签”)是Struts里非常常用的一个标签,其作用在于循环显示给定容器对象中的值。
  
  如此常用的标签,其源代码当然需要拿出来研究一下,以下列举几条研究成果:
  
  1、该标签内部使用Collection来表示给定的容器,所有的给定容器对象(如ArrayList,Map等)都会被其转化成为Collection,Collection实际就是Map和List的父类。
  
  2、该标签自己维护循环索引,不用程序员管理索引
  
  3、该标签常见的几个属性如下:name、property、scope、id
  
  对应Struts给出的Api说明如下:
  
  name:包括要遍历Collection的Jsp页面的bean的名字(如果property没有被定义),或者是那些通过getter方法获得属性的Jsp中的Bean的名字,这些getter方法返回的是Collection(如果property定义了)。
  
  property:在name命名的Jsp bean中定义的属性的名字,通过getter方法返回一个Collection
  
  scope:指示到哪里去寻找name为名字的bean,如果没有定义缺省为"any scope"
  
  id:如果Collection非空的话,在每次遍历时候Collection中每个元素的名字。
  
  其中除了id每个元素均为Rt expr,这儿的rt expr的意思就是Run Time Expression。明确的说就是,如果你对一个Attribute的</mapping><rtexprvalue>指定为true,你就可以在这样的属性中使用<%=%>之类的东东。这个配置文件在tld中。
  
  只有id是必须要说明的。
  
  关于Api说明的说明:
  
  id只是一个临时标识,在下面的<bean:write里面出现的name属性要和id一致才能打印出<bean:write的property,而此property就是在iterator中的属性。 <br="">  
  举例说明
  
  以下代码生成一个阶梯状表格
  
  系统 资源 操作
  
  soft3
  res3
  opt3
  soft12
  res12
  opt1211
  soft11
  res11
  opt1111
  
  在此之前传来一个request.getAttribute("userPurview"),所以有在第一个logic中的userPurview,就是在这个request里面寻找userPurview
  
  返回的是一个list
  
  
>  
  
  
  
  <logic:iterate name="userPurview" scope="request" id="targetSys">//这个id可以随便起名,但是要注意下文使用的一致性
  
  
  
  
  <logic:iterate name="targetSys" property="purviewResList" id="targetRes">
  <td height="21" class="unnamed5">
  <bean:write name="targetRes" property="cn">
  
  <td height="21" class="unnamed6">
  </bean:write>
  
  <logic:iterate name="targetRes" property="purviewOprList" id="targetOpr">
  <td height="21" class="unnamed4">
  <td height="21" class="redzi">
  <bean:write name="targetOpr" property="cn">
  </bean:write>
  </logic:iterate>
  
  </logic:iterate>
  
  </logic:iterate>
  
  
  结论:
  
  多级迭代和单层差不多,唯一注意的就是id和<bean:write中的name的对应,上级logic的id与下级logic的name对应,并且取出来的要是个collection,name和id不一定实际需要这个bean,都是虚拟的。 <br="">  12:44 | 永久链接 | 浏览 (37) | 评论 (0) | struts |
  html:form注意事项
  在使用html:form时需指定action属性,特别是在使用
  html标签时指定的action应在xml中找得到并且页面显示的ActionForm
  应于action中使用的.do引擎相匹配,否则JSP会出错
  Struts中JSP基本操作
  文件头部需增加的代码
  <%@ page contentType="text/html;charset=gb2312" %>

  <%request.setCharacterEncoding("GB2312");%>

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

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

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

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

  一般信息输出

  </rtexprvalue><bean:write name="[Xml中Form-bean段的name属性]" property="[该Form-bean]成员属性">

  下拉框输出

  注:所有html标签(即需在form中显示的),在使用时都需在</bean:write><html:form>容器内部

  <html:form action="[为处理请求的页面,如′/Hello.do′]">

  <html:select property="[用于传数据的ActionForm的一个属性,该值作为默认值]">

  <html:options <br="">
name="[Xml中Form-bean段的name属性]"

property="[将ActionForm的一个属性作为Option的value,该属性为Collection,]"

labelProperty="[将ActionForm的一个属性作为Option的text,该属性为Collection,]"

/>  name="[Xml中Form-bean段的name属性]"

  property="[将ActionForm的一个属性作为Option的value,该属性为Collection,]"

  labelProperty="[将ActionForm的一个属性作为Option的text,该属性为Collection,]"

  />

  </html:select>

  </html:form>

  逻辑叠代器使用

  <logic:iterate <br="">
id="[自定义的代表封装单条记录标识,该标识应与bean:write中name属性相同]RecoreId"

name="[Xml中Form-bean段的name属性]"

property="[Action中具为Collection属性名称]"

offset="[显示的偏移量]"

length="[显示记录数]"

>  id="[自定义的代表封装单条记录标识,该标识应与bean:write中name属性相同]RecoreId"

  name="[Xml中Form-bean段的name属性]"

  property="[Action中具为Collection属性名称]"

  offset="[显示的偏移量]"

  length="[显示记录数]"

  >

  <bean:write <br="">
name="[自定义的代表封装单条记录标识,该标识应与bean:write中name属性相同]RecoreId" property="[单条记录所映射的ActionForm的属性]recordname"/>  name="[自定义的代表封装单条记录标识,该标识应与bean:write中name属性相同]RecoreId" property="[单条记录所映射的ActionForm的属性]recordname"/>

  </html:form></logic:iterate>

  12:44 | 永久链接 | 浏览 (28) | 评论 (0) | struts |

  Struts Html标签和标准的HTML标签功能相同,这里提倡在Struts应用中使用Struts标签,这是因为这些标签可以和Struts框架的其他组件紧密的联系起来,如比标签用来定义HTML表单,Struts能够把这个表单中的数据自动映射到对应的ActionForm中.下面对具体的标签进行深度研究.首先研讨一些基本的东东,我个人认为不是很常用的,生成基本HTML元素的标签,这些标签和HTML元素对应,主要包括:

  1)生成元素,这个标签有一个lang属性,用于显示用户使用的语言,设置卫true的时候,标签将先根据存储当前HttpSession中的Locale对象来输出网页数用的语言,如果没有HttpSession或者里面没有Locale对象,就根据HTTP请求头的属性来输出语言,如果HTTP请求头中没有,就根据默认的Locale来输出语言.

  2)生成元素,这个用于生成当前网页的绝对URL路径.如果使用了这个标签,当该网页引用同一个应用的其他网页的时候,只需要给出相对于当前网页的相对URL路径即可.

  3)生成Anchor元素,这个是超连接标签,感觉有一些好处可言,比如允许在RUL中以多种方法包含请求参数.当用户浏览器关闭Cookie的时候,会自动重写URL,把SessionID作为请求参数包含在URL中,用于跟踪用户的Session状态.它的主要属性有三种,分别是forward指定全局转发连接.href指定完整的URL连接.page指定相对于当前网页的RUL.

  4)生成用户请求URI,用于输出超连接中的URL部分,但它并不生成HTML

  元素.URI指的是URL中的协议,主机和端口以后的内容.

  5)生成HTML元素,用于在HTML页中嵌入图片.page属性指定当前的URI.

  根据我个人的一些看法,感觉Struts确实很好,但是在好的东西也有一些不实用的地方,JAVA也是如此,以上方法我比较推荐标签,感觉这个标签有十分不错的功效,下面阐述一下具体的使用方法:

  1) 创建全局转发连接:首先在Struts配置文件中配置

  在JSP页面中引用:index

  2) 创建完整URL的连接,也就是说可以连接到其他的站点

  Action

  3) 从一个网页连接到同一个应用的另外一个网页

  Action

  4) 在URL或者RUI中包含请求参数的方法

  Action

  5) 在URL或者URI中包含单个请求变量的方法

  pagemProperty>Action

  paramId属性指定请求参数名,paramName属性指定变量名称,paramProperty指定变量卫JavaBean的属性.

  研讨完了StrutsHtml标签库的基本标签,下面开始研究一个重要的东东,Struts的表单标签以及它的子标签,单选按钮,复选框,下拉列表等等,下面是详细介绍:

  1)表单标签的action属性来指定当用户提交表单后,处理用户请求的组件,就是说在form里action属性比如设置了一个in.do的,那么在配置文件中action元素的path属性如果是/in,这就说明是这个action来接收form提交过来的数据.这个感觉挺简单,此外还需要知道name是设置表单名字,method是来设置请求方法,比如Get或Post.

  2)文本标签的property属性指定字段的名字,它和ActionForm中的一个属性匹配,这个属于表单标签的一个子标签,可以把用户填写的值提交到具体的ActionForm中

  3)标签在表单中生成取消按钮,当用户按下取消按钮的时候,产生一个取消事件,这个时间由Action来捕获,至于如何处理在Action类中的execute()方法编程实现,主要用途是在用户按了提交按钮,请求没发送过去又不想提交的时候,起到一个反悔作用.

  4)标签用来生成复位按钮,类似以上的取消按钮这些实现复位,取代了HTML代码.

  5)标签生成提交按钮.使用方法和取消,复位一样都是这样写代码的:

  提交.

  6)标签在表单上生成隐藏字段,用于在表单上存放不希望让用户看到或者不允许修改的信息,它的属性类似文本标签,property和ActionForm中的具体属性对应.如果想要在表单想显示某个值,而且不希望用户修改,可以用这个方法.

  7)标签在表单上生成标准的HTML检查框,比如ActionForm中的属性是boolean类型只能有2个值,就可以在表单中使用这个标签来表示.主要通过property属性来设置对应的ActionForm属性,还有一个value属性,用来设置用户选中检查框的值,默认值是true,就是说当用value=false的时候如果用户没选择这个检查框,就把ActionForm的属性设置卫true,为了检查框能够正常工作,必须在ActionForm的reset()方法中对其复位,在value属性为true的时候,必须在reset()方法中把对应的属性设置为false.

  8)标签和差不多,区别就在于它可以生成复选框.它的性能比更加灵活,可以动态的决定被选中复选框的数目,只要property属性相同,而value属性不一样,就可以和ActionBean的同一个数组对应.此外checkbox只能和blooean类型的属性对应,而multibox则没有限制.

  9)标签表示单选按钮,多个标签可以组合使用.

  10)标签生成下拉列表或多选列表,重要的属性是size属性指定每次网页上显示的可选的项目数量.multiple属性指定是否支持多项选择,如果设置为true表示多选列表,默认为false.property属性于ActionForm中的某个属性对应,这个属性用来存储用户在列表上选中的值.在单选的情况下,ActionForm的对应属性定义为简单类型,不能是数组.在多选的情况下类型是数组.

  以上是对StrutsHtml标签库的Form系列标签以及子标签的简单阐述,这些标签不一定都常用,所以了解即可,能掌握常用的几个标签就OK了.下面研究一下文件上传,是指通过用户浏览把用户本地的文件传到Web服务器标签提供了从Html表单中上传文件的功能.这个标签也是Form标签的子标签所以必须嵌套在中,而且的method属性必须设置为Post.enctype编码属性必须设置为multipart/form-data.而且它的property属性必须设置和ActionForm中的Flie类型的属性对应.如果property=”file”则ActionForm中必须要设置private File file;属性,而且提供相应的get/set方法.然后通过Action来完成接收上传文件的功能,首先创建一个读取用户上传文件的InputStream流对象,然后创建一个把上传数据写到目标文件中的OutputStream对象,接下来通过一个驯化把数据从源文件写到目标文件中,上传就实现了.

  标签用于输出错误消息,在request和session范围寻找ActionMessages或者其子类ActionErrors集合对象.在从ActionMessages集合对象中读取ActionMessage对象,把ActionMessage对象包含的错误消息文本显示在网页上.至于具体的错误文本消息存放在ResourceBundle中,而且标签能识别错误文本中的HTML元素,例如等等.标签可以存放在网页的任何地方,也可以在表单内.因为它输出错误和它在网页的位置无关.它的具体属性是.1)name:指定ActionMessages对象的属性key,标签处理类根据这个key来家查request或session范围的ActionMessages集合对象.2)property:指定消息属性,如果不设置会显示ActionMessages集合对象中所有的消息对象ActionMessage.3)bundle:指定ResourceBundle如果这个没设置,将从应用中默认的ResourceBundle中获取消息.

  标签和标签有些类似,也能够在网页中输出消息,具体的属性是:1)name:指定ActionMessages对象的属性key,标签处理根据这个key来检索request或者session范围内的ActionMessages对象.2)message:指定消息的来源,如果是true则从request或者session范围内检索出属性key为Globals.MESSAGE_KEY的具体的ActionMessages对象.3)id:用来命名从消息集合中检索出每个ActionMessages对象,它和标签的name属性匹配.

  Struts的标签库固然很好,但是有些是需要用的,有些也是不用也罢的,所以可以根据实际情况进行研究,不过感觉还是都了解一下的好,不一定都要会用,但是起码都能看懂就OK了呵呵^_^ (网友们的支持,是我继续写技术文章的动力!)

  12:43 | 永久链接 | 浏览 (51) | 评论 (0) | struts |

  Struts标签

  solo L

  发布日期:2005年06月01日,更新日期:2005年06月01日

  您使用过旅游指南吗?它总是能让我们快速的找到目的地。我对此有深刻的印象,希望这篇指南也能使您快速的完成Struts标签相关的任务。我深入细致的总结了日常使用Struts的一些经验,感觉Struts标签的用途非常广泛并且功能强大,但是学起来还是比较费时间的。我认为学习Struts标签最好的方式就是参考良好的示例,幸运的是这些示例您可以在下面找到。

  Struts是Apache Jakarta的一个著名的开源项目,目标是为构建基于Java的web应用程序提供一个框架。

  Struts提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:

  Bean Tags:该标签库包含的标签可以用来创建bean、访问bean和访问bean的属性。同时提供了依据cookies、headers和parameters的值创建相关bean的能力。

  HTML Tags:该标签库包含的标签可以用来创建Struts输入表单。

  Logic Tags:该标签库包含的标签可以用来进行逻辑判断、集合迭代和流程控制。

  Nested Tags:该标签库建立在前三个标签库的基础上,具有前三个标签库的所有功能,只是允许标签间的嵌套。

  Tiles Tags:该标签库包含的标签可以用来创建tiles样式的页面。

  这篇指南主要介绍前三个标签库中的标签。如果您对后两类标签也感兴趣可以查阅参考资料中的Struts的用户指南。

  回页首

  bean:cookie

  cookie最早是由Netscape公司提出来的,用来存储客户的少量状态信息。如果您对cookie的具体细节感兴趣可以查阅参考资料中的cookie spec。

  bean:cookie标签取回请求中名称为name的cookie的值。如果没有指定multiple属性则依据刚取回的值创建一个Cookie类型的bean。如果指定了multiple属性则依据刚取回的值创建一个Cookie[]类型的数组。然后用id属性值将Cookie或Cookie[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。

  下面的代码片段示例了如何使用bean:cookie标签读取名为JSESSIONID的cookie的值,并且使用了两种方式进行了输出:

  <logic:present cookie="JSESSIONID">

  <bean:cookie name="JSESSIONID" id="jSession">

  

  这个cookie的名称是</bean:cookie><bean:write name="jSession" property="name">,值为</bean:write><bean:write name="jSession" property="value">。


  

  <%

String name = jSession.getName();

String value = jSession.getValue();

out.println("这个cookie的名称是"+name+",值为"+value+"。<  String name = jSession.getName();

  String value = jSession.getValue();

  out.println("这个cookie的名称是"+name+",值为"+value+"。
");

  %>
  </bean:write></logic:present>
  回页首
  bean:define
  bean:define标签在toScope(如果没有指定值就使用page作用域)指定的作用域中创建一个新属性,同时创建一个scripting变量。我们可以通过id值使用它们。新创建的属性可以由其它标签使用,而新创建的scripting变量可以由JSP脚本使用。
  我们可以使用三种方式为新创建的属性和scripting变量赋值:
  通过该标签的name、property和scope取回值,并且保持类型的一致性,除非取回的值为Java的原始类型,这时会使用适合的包装器类对这些值进行包装。
  通过该标签的value指定值,这时新创建的属性和scripting变量的类型为java.lang.String。
  通过在该标签的体中嵌入值,这时新创建的属性和scripting变量的类型为java.lang.String。
  下面的代码片段示例了如何使用bean:define标签创建新属性values和新scripting变量values,它将listForm中persons的值取出来赋给values:
  </logic:notempty><bean:define name="listForm" property="persons" type="java.util.List" id="values">
  下面给出ListForm的代码片段以帮助您更好的理解,其中Person是一个只有id和name两个属性的简单bean:
  public class ListForm extends ActionForm {
  private List</bean:define><person> persons = null;
  public List</person><person> getPersons() {
  return persons;
  }
  public void setPersons(List</person><person> persons) {
  this.persons = persons;
  }
  public void reset(ActionMapping mapping, HttpServletRequest request) {
  persons = null;
  }
  }
  下面的代码片段示例了logic:iterate标签如何使用bean:define标签创建的新属性values:
  <logic:iterate name="values" id="person">
  <bean:write name="person" property="id">

  </bean:write></logic:iterate>
  下面的代码片段示例了JSP脚本如何使用bean:define标签创建的新scripting变量values:
  <%

Person p = new Person();

for(int i=0;i<  Person p = new Person();

  for(int i=0;i<values.size();i++){<br>
  p = (Person)values.get(i);

  out.println(p.getId());

  out.println("
");

  }

  %>
  回页首
  bean:header
  bean:header标签取回请求中名称为name的header的值。如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean。如果指定了multiple属性则依据刚取回的值创建一个String[]类型的数组。然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
  下面是我的浏览器发送的header的内容,这些内容和浏览器有关,因此您的浏览器发送的内容可能和下面列出的不同。不过这没有关系,因为要理解bean:header标签您只要对这些内容有一个大概的认识就足够了。
  accept: */*
  accept-language: zh-cn
  accept-encoding: gzip, deflate
  user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
  host: localhost:8080
  connection: Keep-Alive
  下面的代码片段示例了如何使用bean:header标签读取名为User-Agent的header的值,并且使用了两种方式进行了输出:
  <logic:present header="User-Agent">
  
  您的浏览器是<bean:header name="User-Agent" id="userAgent">
  </bean:header><bean:write name="userAgent">。

  
  <%

out.println("您的浏览器是"+userAgent+"。<  out.println("您的浏览器是"+userAgent+"。
");

  %>
  </bean:write></logic:present>
  回页首
  bean:include
  bean:include标签对指定url(由forward、href或page确定)处的资源做一个请求,将响应数据作为一个String类型的bean绑定到page作用域,同时创建一个scripting变量。我们可以通过id值访问它们。
  下面的代码片段示例了bean:include标签的用法,其中include.txt文件包含要include的内容,然后将这些内容输出:
  </person><bean:include id="value" page="/include.txt">
  
  </bean:include><bean:write name="value">

  
  <%

out.println(value);

%>  out.println(value);

  %>
  回页首
  bean:message
  bean:message标签用来从指定的locale中取回国际化的消息并输出,在这个过程中我们还可以传递五个以内的参数。message key可以通过key直接指定,也可以通过name和property间接的指定。
  bean:message标签有两种指定message key的方式,一是通过key属性直接指定;二是通过name和property属性间接的指定,其中message key是在message resources文件中定义的。
  我们可以在struts-config.xml文件中使用</bean:write><message-resources>来设置message resources文件。
  为了介绍该标签我使用了三个message resources文件,三个文件的名字分别为Resources.properties、Resources_en.properties和Resources_zh.properties。在struts-config.xml文件中的设置(这里不用设置三个,struts会依据locale自动找到对应的文件)如下:
  </message-resources><message-resources parameter="Resources">
  三个message resources文件中定义的message key为:
  
  resource=Resources.properties.
  from=Resources.properties.
  
  from=Resources_en.properties.
    因为文件的编码被限制为ISO8859所以要有汉字必须用jdk的native2ascii提前转换

  -->
  from=Resources_zh.properties.
  下面的代码片段示例了bean:message标签的用法:
  </message-resources><bean:message key="from">

  </bean:message><bean:message key="resource">

  <html:link action="/locale?language=en">English</html:link>
  <html:link action="/locale?language=zh">Chinese</html:link>
  上面的代码中含有改变locale的两个html:link标签,要使它们工作您的struts-config.xml文件中必须含有下面定义的form和action:
  <form-bean name="localeForm" type="org.apache.struts.action.DynaActionForm">
  <form-property name="language" type="java.lang.String">
  </form-property><form-property name="country" type="java.lang.String">
  
  </form-property><form-property name="page" type="java.lang.String" initial="/message.jsp">
  </form-property></form-bean>
  <action name="localeForm" scope="request" type="org.apache.struts.actions.LocaleAction" path="/locale"></action>
  在不同的locale下我们得到了如下的两个结果:
  在locale为zh时的结果:
  Resources_zh.properties.
  Resources.properties.
  在locale为en时的结果:
  Resources_en.properties.
  Resources.properties.
  让我们来看一下在locale为zh时如何得到的是上面的结果。因为locale为zh所以</bean:message><bean:message key="from">
先找Resources_zh.properties这个文件从中得到form键的值。而</bean:message><bean:message key="resource">
也会先找Resources_zh.properties这个文件但这次没有找到resource键,这时Struts会到Resources.properties这个文件中找,很幸运这里找到了。如果还没有找到,或message resource文件不存在就会抛出异常。当locale为en时类似,您可以自己试试。
  回页首
  bean:page
  bean:page标签将页上下文中的application、config、request、response 或 session取出,然后用id属性值将它们绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
  下面的代码片段示例了bean:page标签取出response,然后使用bean:write标签将response的characterEncoding和contentType属性输出:
  </bean:message><bean:page property="response" id="res">
  
  </bean:page><bean:write name="res" property="characterEncoding">

  </bean:write><bean:write name="res" property="contentType">

  
  <%

String characterEncoding = res.getCharacterEncoding();

String contentType = res.getContentType();

out.println(characterEncoding+"<  String characterEncoding = res.getCharacterEncoding();

  String contentType = res.getContentType();

  out.println(characterEncoding+"
");

  out.println(contentType+"
");

  %>
  您可以用和上面类似的代码访问application、config、request 或 session中的任何一个对象。
  回页首
  bean:parameter
  bean:parameter标签取回请求中的参数值。如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean。如果指定了multiple属性则依据刚取回的值创建一个String[]类型的数组。然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
  下面的两个代码片段使用相同的url传递参数,url的形式为http://127.0.0.1:8080/struts-demo/parameter.jsp?param=1¶m=2¶m=3。前面的代码片段中没有指定multiple属性,因此p是String类型而且仅仅读取了参数的第一个值。后面的代码片段中指定了multiple属性的值,因此ps是String[]类型的包含所有参数的值。
  </bean:write><bean:parameter name="param" id="p">
  </bean:parameter><bean:write name="p">
  </bean:write><bean:parameter name="param" id="ps" multiple="true">
  <logic:iterate name="ps" id="p">
  <bean:write name="p">

  </bean:write></logic:iterate>
  回页首
  bean:resource
  bean:resource标签取回指定的web应用程序的资源,以InputStream或String的形式保存到page作用域中并且创建scripting变量。采用什么形式取决于标签的input属性,如果指定input则以InputStream的形式保存,如果没有指定input则以String的形式保存。
  下面的两个代码片段示例了bean:resource标签,其中resource.txt是要使用的资源文件。前面的代码片段中没有指定input属性,因此以String的形式处理资源文件,bean:write标签输出资源文件的内容。后面的代码片段中指定了input属性的值,因此以InputStream的形式使用资源文件,两个bean:write标签分别输出InputStream对象的实例名(如java.io.ByteArrayInputStream@16dadf9)和类名(如class java.io.ByteArrayInputStream)。
  </bean:parameter><bean:resource name="/resource.txt" id="str">
  
  </bean:resource><bean:write name="str">

  
  <%

out.println(str+"<  out.println(str+"
");

  %>
  </bean:write><bean:resource name="/resource.txt" id="is" input="true">
  
  </bean:resource><bean:write name="is">

  <bean:write name="is" property="class">
  
  <%

out.println(is+"<  out.println(is+"
");

  out.println(is.getClass()+"
");

  %>
  回页首
  bean:size
  bean:size标签创建一个java.lang.Integer类型的bean,这个bean的值为该标签指定的Collection或Map中所含元素的个数。 这可以和logic:iterate标签配合使用,因为logic:iterate标签不能得到所叠代的集合的元素的个数,这有时候很不方便。
  下面的代码片段示例了bean:size标签取出persons中还有元素的个数,其中listForm和persons的定义参见bean:define标签部分:
  <logic:notempty name="listForm" property="persons">
  <bean:size name="listForm" property="persons" id="size">
  </bean:size><bean:write name="size">
  </bean:write></logic:notempty>
  回页首
  bean:struts
  bean:struts标签取回Struts的内部对象formBean、forward或mapping的值,然后用id绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
  下面的代码片段示例了bean:struts标签取出listForm对象,让我们先来看一下listForm的定义在读代码:
  
  private boolean one = false;
  private boolean two = false;
  private boolean three = false;
  <html:checkbox name="checkboxForm" property="one">One</html:checkbox>
  <html:checkbox name="checkboxForm" property="two">Two</html:checkbox>
  <html:checkbox name="checkboxForm" property="three">Three</html:checkbox>
  如果选中后被提交则相应的属性的值为true。
  回页首
  html:radio
  html:radio标签生成一个radio。主要的用法有两种,下面我们通过代码来示例。
  下面的代码示例了html:radio标签的一般用法,如果被提交则选中的radio的value值将被提交到radioForm中的id中。
  <html:radio name="radioForm" property="id" value="00001">One</html:radio>
  <html:radio name="radioForm" property="id" value="00002">Two</html:radio>
  下面的代码示例了html:radio标签的典型用法,其中的persons和bean:define标签中的一致,您可<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->
系统资源操作

  <bean:write name="targetSys" property="cn">//此处name和上面id保持一致,property就是第一个list里面的元素
  </bean:write>
分享到:
评论

相关推荐

    (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    深圳建设施工项目安全生产奖惩管理制度.docx

    深圳建设施工项目安全生产奖惩管理制度

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    自考04741计算机网络原理真题及答案及课件

    04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar

    C++实现rpc,全程手写

    C++实现rpc,全程手写

    前端拿到的列表数据里id都一样的处理办法.txt

    前端拿到的列表数据里id都一样的处理办法.txt

    最新仿720云全景制作源码-krpano仿720云全景网站源码 新增微信支付+打赏+场景红包

    最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。

    YOLO算法-可乐罐子数据集-336张图像带标签-可乐.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    环境监测系统源代码全套技术资料.zip

    环境监测系统源代码全套技术资料.zip

    【编码解码】基于matlab罗利衰落信道编解码器设计【含Matlab源码 9930期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。

    YOLO算法-工作场所安全隐患数据集-859张图像带标签-倒下的工人-配备个人防护装备的工人-无个人防护装备的工人-火.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    自学考试02331数据结构试题及答案2021-2022

    02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt

    验收确认单表格.docx

    验收确认单表格.docx

    内存搜索工具(易).rar

    内存搜索工具(易).rar

    饮食管理系统项目源代码全套技术资料.zip

    饮食管理系统项目源代码全套技术资料.zip

    计算机视觉项目:Swin-Transformer 【tiny、small、base】模型实现的图像识别项目:番茄病害图像分类

    【项目简介】 代码主干网络采用Swin-Transformer 家族系列,包括【tiny、small、base】三种模型。pretrained和freeze_layers参数为是否采用官方预训练模型和是否仅训练分类头。为了做对比消融试验,优化器采用了Adam和SGD、AdamW三种。损失函数采用多类别的交叉熵、学习率优化策略采用cos余弦退火算法 【评估网络】 评估的指标采用loss和准确率(accuracy),分别会在训练集和验证集上进行评估、输出、绘制曲线图像。同时会在训练集、验证集进行一系列评估,包含混淆矩阵、recall、precision、F1 score等等曲线图像,以及recall、precision、F1 score、特异度的输出信息等等。 【具体各类别的指标在json文件中查看】 【如果想要更换数据集训练,参考readme文件】 【本项目为8种番茄病害图片(约4k张数据),包含数据集和标签,可以一键运行】

    (177121232)windows电脑下载OpenHarmony鸿蒙命令行工具hdc-std

    windows电脑下载OpenHarmony鸿蒙命令行工具hdc_std。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    小程序毕业设计项目-音乐播放器

    本项目可以作为小程序毕设项目,主要功能为音乐播放器,主要功能是:可以播放歌曲(采用mp3网络连接实现)、专辑封面播放时可以旋转,能够实现开始和暂停播放,可以点击下一首歌曲,主页面实现动态轮播图

    考研学习分享-JAVA-基于Vue+SpringBoot的考研学习分享平台设计与实现(毕业论文)

    考研学习分享功能的描述可以涵盖以下几个主要模块,旨在为考研学生提供一个互动、资源共享、经验交流的平台: 1. 用户注册与个人信息管理 学生可以通过邮箱或手机号注册账户,填写个人信息,如姓名、专业、目标院校等。 用户可设置学习目标和进度,方便记录自己的学习历程。 2. 学习资料共享 用户可以上传、下载考研相关学习资料,如教材、真题、笔记、复习计划等。 提供文件分类功能,按学科、院校、难度等进行整理,方便用户查找。 支持多种文件格式,如PDF、Word、Excel、图片等。 3. 复习经验分享 学生可以发布自己的复习经验文章,分享复习方法、备考心得、时间管理技巧等。 提供文章评论和互动功能,其他学生可以点赞、评论、提问,促进经验交流。 设置专栏或专题,帮助学生快速找到自己感兴趣的复习内容。 4. 考研小组与社交功能 学生可以创建或加入学习小组,组内成员可共享资料、讨论问题、互相鼓励。 提供私信、群聊功能,方便学员在小组内进行实时讨论和交流。 支持设置小组学习目标和定期检查进度,增加学习动力。 5. 在线课程与讲座 提供考研各科目(如英语、数学、政治等)的在线课程资源,用户可以报名参加。

Global site tag (gtag.js) - Google Analytics