taglib-html:浏览器会自动解析

引用:

<%@  taglib uri="http://jakarta.apache.org/struts/tags-html" profix="html"%>

jsp页面使用

<html:html> 生成一个<html>元素

<html:base> 生成一个<base>元素
	<html:base href="<%-basePath%>"生成当前页面的绝对路径,意义不大
<html:link> 生成一个<a>元素
	<a href="/loginform/login.do">login</a>
	
	由struts-config.xml中的全局转发创建链接
		<global-forwards>
			<forwards name="index" path="/index.jsp"/>
		</global-forwards>
	在jsp页面创建链接
		<html:link forwards="index">
			Link to ActionForward
		</html-link>
		
	在url全路径创建链接:提供全路径
		<html:link href="http://www.baidu.com">  
			Link to baidu
		</html-link>
		
	由当前页面的相对路径创建链接
		<html-link page="/HtmlBasic.do">
			Link to page
		</html-link>
<html:rewrite>标签<html-link>URI部分

<html:img>生成一个<img>元素



<html:form>生成一个<form> 元素
	jsp页面创建form属性
		<html:form action="/register">
		</html:form>
	
	Formbean里面添加类ClientForm
	
	struts-config里面配置文件
		<form-beans >
			<form-bean name="clientForm" type="com.amaker.struts.form.ClientForm" />
		</form-beans>		
<html:text>生成一个文本的Input元素
	username<html:text property="username"/><br/>
	
	Formbean里面Form类添加属性:username
	
<html:hidden>生成一个文本的Input元素
	<html:hidden property="userid"/>
	
	Formbean里面Form类添加属性:userid
<html:submit>生成一个文本的Input元素
	<html:submit value="提交"/>
	
<html:cancel>生成一个文本的Input元素
	<html:cancel value="取消"/>
	
<html:reset>生成一个文本的Input元素
	<html:reset value="重置">
	
<html:checkbox>生成一个有单选左右的按钮,比如协议是否同意的时候选择
	jsp页面创建
		ispay:<html:checkbox property="pay"/>
		
	Formbean里面Form类添加属性:
		private String pay  
		打钩:  on
		不打勾: 什么都没有
	了解,用的不多
	
<html:multibox>生成一个多选按钮
	jsp页面
		hobby<html:multibox property="hobby" value="1">reading<br/>
			 <html:multibox property="hobby" value="2">swing
		 
	Formbean里面Form类添加属性:
		private String[] hobby
	
<html:radio>生成一个有单选按钮
	jsp页面
		gender:<html:multibox property="gender" value="female"/>female<br/>
		<html:multibox property="gender" value="man"/>man

	Formbean里面Form类添加属性:
		private String  gender
		
<html:select>生成一个下拉列表
	在jsp页面
		<html:select property="position">
			<html:option value="1">CEO<html:option>
			<html:option value="2">CFO<html:option>
			<html:option value="3">PM<html:option>
	
	Formbean里面Form类添加属性:
		private String  position
		
	从数据库获得值生成响应标签
	FormBean里面有Position(String id,String name)
	jsp的<head>里面测试,实际应该从数据库里拿到list,在action里面赋值
	顶部
	<%@ language="java" import="com.amaker.bean.*,java.util.*"%>
		head里面——<%
			Link list=new ArrayList();
			for(int i=0;i<10;i++){
				Position posi=new Position(i,"position"+i);
				list.add(posi);
			}
			request.setAttribute("PL",list);
		%>
	
	jsp的<body>里面
		<html:options collection="PL" property="id" labelProperty="name"/>
		id对应formbean里面position表单的id,name对应的值
<html:errors>
	jsp页面
		<html:errors property="username"/>
		
	手动验证:
		FormBean的类里面继承ActionForm,需要重写一个 validate方法,只有这个方法通过,才可以执行Action,大部分时间写在这里
		顺序:
			先xml里面的*.do,找到struts-config.xml里面的path跳转路径,然后执行name的FromBean获得值,
			获得值之后验证信息,最后执行Action
		public ActionErrors validate(...){
			ActionErrors errors=new ActionErrors();
			if(username==null||username.trim().equals("")){
				errors.add("username",new ActionMessage("login.username"));
				//"username"标签,响应jsp里面的错误标签  login.username在资源配置文件中的提示错误信息
				return errors;
			}
			return null;
		}
		return errors 返回struts-config里面的input路径
		如果在Action里面做验证,如果错误需要 返回:mapping.getInputforward();
	
	
	自动验证:
	1 添加struts后项目内需要添加2个jar包:commos-validator.jar  和 jakarta-oro.jar
	2 添加2个xml配置文件: validation.xml 和validator-rules.xml
		validation.xml可以去structs里面的apps/struts-blank-1.3.8\WEB-INF下面找模板,如果模板里面有<formset>"另"一个列子,则删除,否则可能会报错
	3 在Struct-config.xml配置文件中加载自动验证工具类和配置文件,这段话在validator-rules.xml里面有:
		<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
		</plug-in>
	4 formBean要继承ValidatorForm
	5 在validation中声明验证
	6 调用
		在ApplicationResources.properties配置文件里:
			errors.minlength={0} can not be less than {1} characters.
			
			login.username=Username
			
		validation.xml
			<formset>
				<form name="loginForm">    //name是struts-config.xml里面<form-bean>的name
					<field property="username" depends="required,maxlength">
						<arg key="loginForm.username" position="0"/>
						<arg name="maxlength" key="${var:maxlength}" resource="false" position="1"/>
							<var>
								<var-name>maxlength</var-name>
								<var-value>20</var-value>
							</var>
					</field>
					<field property="age" depends="required,intRange">
						<arg key="loginForm.username" position="0"/>
						<arg name="intRange" key="${var:minlength}" resource="false" position="1"/>
						<arg name="intRange" key="${var:manlength}" resource="false" position="2"/>
							<var>
								<var-name>mixlength</var-name>
								<var-value>1</var-value>
							</var>
							<var>
								<var-name>maxlength</var-name>
								<var-value>150</var-value>
							</var>
					</field>
				</form>
			</formset>
			name:验证FormBean名称,struts-config里面定义的名称
			property:验证FormBean的属性
			depends:验证规则的逻辑名称
			key:验证提示信息
			resource:
				true:来自资源文件
				false:直接设置
			var:为变量传递参数
	
		loginForm需要继承 ValidatorForm
		
		
	validator:
		required,minlength,maxlength,mask:正则表达式,byte,short,integer,long,float,double,date,
		intRange,floatRange,doubleRange,creditCard,email,url
		
	自定义验证:验证两个字段是否相同
		配置文件:
			<field property="password" depends="required,twofields">
				<arg key="memberRegisterForm.password" position="0"/>
				<arg name="twofields" key="memberRegisterForm.password2" position="1"/>
					<var>
						<var-name>secondProperty</var-name>
						<var-value>password2</var-value>
					</var>
			</field>
		写一个类:
			public static boolean validateTwoFields(Object bean,ValidatorAction va,Field field,ActionMessages errors,HttpServletRequest request){
				String value=ValidatorUtils.getValueAsString(bean,field.getProperty());
				String property2=field.getVarValue("secondProperty");
				String value2=ValidatorUtils.getValueAsString(bean,property2);
				if(!GenericValidatior.isBlankOrNull(value)){
					try{
						if(!value.equals(value2)){
							errors.add(field.getKey(),Resources.getActionMessage(request,va,field));
							return false;
						}
					}catch(Exception e){
						errors.add(field.getKey(),Resources.getActionMessage(request,va,field));
						return false;
					}
				}
				return true;
			}

File

<html:file>生成一个<input type=file>元素来支持文件上传
	Jsp页面,必须是enctype="multipart/form-data",一个字都不能差
		<html:form action="HtmlFile.do" enctype="multipart/form-data">
			File:<html:file property="file"/>
		</html:form>
		
	Formbean里面Form类添加属性
		private FormFile file;
		
	eg:
	FormFile file=uploadForm.getFile();
	InputStream in=file.getInputStream();
	String fileName=file.getFileName();
	int size=file.getFileSize();
	//得到真实路径
	String path=super.servlet.getServletContext().getRealPath("/upload");
	OutputStream out=new FileOutputStream(path+"\\"+fileName);
	byte[] buf=new byte[size];
	in.read(buf);
	out.write(buf);
	in.close();
	out.close();



解决验证信息中的中文乱码问题

创建build.xml文件
	调用native2ascii.exe进行转码
	代码:
	<project>
		<target name="i18n">
			<native2ascii dest="com/amaker/struts" src="com/amaker/struts/temp" encoding="UTF-8" includes="ApplicationResources*.properties"/>
		</target>
	</project>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值