15_Struts1.x高级应用

15.1 Struts1.x标签库

分为html,bean,logic,nested和tiles标签

15.1.1 html标签库

tag.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
	<head>
		<title>JSP for TagForm form</title>
	</head>
	<body>
		<html:form action="/tag">
			选择框:
			<html:checkbox property="checkbox" value="体育">体育</html:checkbox>
			<html:checkbox property="checkbox" value="音乐">音乐</html:checkbox>
			<html:checkbox property="checkbox" value="影视">影视</html:checkbox>
			<br />
			文件域:
			<html:file property="file"></html:file>
			<br />
			隐藏域:
			<html:hidden property="hidden"/>
			<br />
			多选框:
			<html:multibox property="multibox" value="选项一">选项一</html:multibox>
			<html:multibox property="multibox" value="选项二">选项二</html:multibox>
			<br />
			密码域:
			<html:password property="password"></html:password>
			<br />
			单选框:
			<html:radio property="radio" value="男">男</html:radio>
			<html:radio property="radio" value="女">女</html:radio>
			<br />
			下拉框:
			<html:select property="select">
				<html:option value="选项一">选项一</html:option>
				<html:option value="选项二">选项二</html:option>
			</html:select>
			<br />
			输入框:
			<html:text property="text"></html:text>
			<br />
			文本框:
			<html:textarea property="textarea"></html:textarea>
			<br />
			图片按钮:
			<html:image src="images/submit.gif"></html:image>
			<br />
			普通按钮:
			<html:button property="button" value="普通按钮"></html:button>
			<br />
			提交按钮:
			<html:submit></html:submit>
			<br />
			重置按钮:
			<html:reset></html:reset>
			<br />
			使用list内容显示下拉框:
			<%--<html:select property="select">
				<html:options collection="personList" property="id" labelProperty="name"/>
			</html:select>
		--%></html:form>
	</body>
</html>


TagForm.java

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.uikoo9.form;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/** 
 * MyEclipse Struts
 * Creation date: 01-06-2013
 * 
 * XDoclet definition:
 * @struts.form name="tagForm"
 */
@SuppressWarnings("serial")
public class TagForm extends ActionForm {
	
	public String getCheckbox() {
		return checkbox;
	}
	public void setCheckbox(String checkbox) {
		this.checkbox = checkbox;
	}
	public FormFile getFile() {
		return file;
	}
	public void setFile(FormFile file) {
		this.file = file;
	}
	public String getHidden() {
		return hidden;
	}
	public void setHidden(String hidden) {
		this.hidden = hidden;
	}
	public String[] getMultibox() {
		return multibox;
	}
	public void setMultibox(String[] multibox) {
		this.multibox = multibox;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getRadio() {
		return radio;
	}
	public void setRadio(String radio) {
		this.radio = radio;
	}
	public String getSelect() {
		return select;
	}
	public void setSelect(String select) {
		this.select = select;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public String getTextarea() {
		return textarea;
	}
	public void setTextarea(String textarea) {
		this.textarea = textarea;
	}
	
	private String checkbox;
	private FormFile file;
	private String hidden;
	private String[] multibox;
	private String password;
	private String radio;
	private String select;
	private String text;
	private String textarea;
}

TagAction.java

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.uikoo9.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.uikoo9.form.TagForm;

/** 
 * MyEclipse Struts
 * Creation date: 01-06-2013
 * 
 * XDoclet definition:
 * @struts.action path="/tag" name="tagForm" input="/form/tag.jsp" scope="request" validate="true"
 */
public class TagAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		TagForm tagForm = (TagForm) form;// TODO Auto-generated method stub
		
		tagForm.setCheckbox("音乐");
		tagForm.setMultibox(new String[]{"选项一","选项二"});
		tagForm.setHidden("隐藏的文本域");
		tagForm.setPassword("这里是密码");
		tagForm.setRadio("女");
		tagForm.setSelect("选项二");
		tagForm.setText("这里是文本域");
		tagForm.setTextarea("这里是一段文本");
		
		List<String> personList = new ArrayList<String>();
		personList.add("person1");
		personList.add("person2");
		personList.add("person3");
		personList.add("person4");
		
		request.setAttribute("personList", personList);
		
		return mapping.getInputForward();
	}
}

15.1.2 bean标签库

beanTag.jsp

<%@page import="com.uikoo9.model.Person"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
 
<html> 
	<head>
		<title>JSP for TagForm form</title>
	</head>
	<body>
		<%
		Person person = new Person();
		person.setName("qiao");
		person.setAge(11);
		
		request.setAttribute("person", person);
		%>
		
		<bean:write name="person" property="name"/>
		<bean:write name="person" property="age"/>
	</body>
</html>


<bean:cookie>,<bean:parameter>,<bean:header>用来获得相应的变量

<bean:message>用来显示资源国际化信息

<bean:resource>可以获取本地Web程序内的资源

<bean:struts>用来获取struts的配置

<bean:include>可以讲一个外部文件包含进来

<bean:size>可以获取集合对象的长度

15.1.3 logic标签库

<logic:present>,<logic:notPresent>判断对象是否存在

<logic:empty>,<logic:notEmpty>判断集合是否为空

<logic:equal>,<logic:notEqual>判断对象是否相等

15.1.4 nested标签库

一般流程:从form中取出值来,然后添加到某个对象中

nested标签可以省略这一步

NestedForm.java

package com.uikoo9.form;

import org.apache.struts.action.ActionForm;

import com.uikoo9.model.Person;

@SuppressWarnings("serial")
public class NestedForm extends ActionForm {
	private String action;
	private Person person = new Person();

	public String getAction() {
		return action;
	}
	public void setAction(String action) {
		this.action = action;
	}
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
}

nested.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%>
 
<html> 
	<head>
		<title>JSP for TagForm form</title>
	</head>
	<body>
		<html:form action="/tile">
			action:<html:text property="action"></html:text><br>
			姓名:<nested:text property="person.name"></nested:text><br>
			年龄:<nested:text property="person.age"></nested:text><br>
			<html:submit></html:submit>
		</html:form>
	</body>
</html>


NestedAction.java

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.uikoo9.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.uikoo9.form.NestedForm;
import com.uikoo9.model.Person;

/** 
 * MyEclipse Struts
 * Creation date: 01-06-2013
 * 
 * XDoclet definition:
 * @struts.action path="/tag" name="tagForm" input="/form/tag.jsp" scope="request" validate="true"
 */
public class NestedAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	@SuppressWarnings("unused")
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		NestedForm tileForm = (NestedForm)form;
		
		if("add".equals(tileForm.getAction())){
			Person person = tileForm.getPerson();
			
			//数据库操作。。。
			
			return mapping.findForward("success");
		}
		
		return mapping.getInputForward();
	}
}

15.1.5 tiles标签库

暂时略过


15.2 DispatchAction

15.2.1 利用Action参数分发

15.2.2 DispatchAction

DispatchAction.java

package com.uikoo9.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class DispatchTestAction extends DispatchAction {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO Auto-generated method stub
		return super.execute(mapping, form, request, response);
	}
	
	public ActionForward add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		System.out.println("执行了add方法");
		return null;
	}
	
	public ActionForward list(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		System.out.println("执行了list方法");
		return null;
	}
}

struts-config.xml中配置:

		<action 
			attribute="dispatchForm"
			input="/form/dispatch.jsp"
			name="dispatchForm"
			parameter="action"
			path="/dispatch"
			scope="request"
			type="com.uikoo9.action.DispatchAction"/>

其中parameter是判断的依据


15.3 上传文件

15.3.1 FormFile类型

表单需要指定enctype

15.3.2 保存FormFile

FormFile提供getInputStream()接口


15.4 Validator自动校验数据

15.4.1 支持自动校验的ValidatorForm

继承这个类就可以了

15.4.2 Validate规则配置

配置validation.xml文件

15.4.3 错误信息配置

配置properties文件

15.4.4 配置到struts-config.xml文件

15.4.5 配置客户端JavaScript校验


15.5 动态属性Form Bean

15.5.1 动态属性表单DynaActionForm

15.5.2 Action中获取动态属性

15.5.3 JSP中使用动态属性


15.6 异常处理

15.6.1 异常捕捉ExceptionHandler

15.6.2 配置ExceptionHandler


15.7 struts-config.xml中使用通配符


15.8 本章小结


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uikoo9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值