struts1.3学习
一、基本配置
- 参考博客
- 项目结构

- web.xml
<!-- struts配置 -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<!--多配置文件-->
<param-value>
/WEB-INF/config/struts-config.xml,
/WEB-INF/config/struts-config-user.xml
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<!--自启动-->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- struts-config.xml
<form-beans>
<!-- 登录form -->
<form-bean name="loginForm" type="com.myframe.struts.form.LoginForm"></form-bean>
</form-beans>
<global-exceptions/>
<global-forwards/>
<action-mappings>
<!--name对应formBean的name validate默认是false scope默认值是session parameter 通过这个值传的参数判断使用哪个方法-->
<action path="/Login" type="com.myframe.struts.action.LoginAction" name="loginForm" validate="false"
scope="request" parameter="method">
<!-- redirect默认是false-->
<forward name="loginSuccess" path="/loginSuccess.jsp"></forward>
<forward name="loginFaild" path="/loginFaild.jsp" redirect="false"></forward>
</action>
</action-mappings>
<message-resources parameter="com.myframe.struts.ApplicationResources"/>
- UserForm.java
//ActionForm本质上是一种JavaBean,是专门用来传递表单数据的DTD(Data Transfer Object,数据传递对象)。
//它包括用于表单数据验证的validate()方法和用于数据复位的reset()方法。 public class UserForm extends ActionForm {//继承ActionFor
//属性名一定要和表单中的name对应
private String u_id;
private String u_name;
private String u_pwd;
private String u_realname;
private String u_logintime;
//setter/getter省略
}
- UserAction.java
public class UserAction extends DispatchAction {//继承DispatchAction
//前台url:<%=basePath%>User.do?method=addUser可以执行addUser方法
public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//这个form是根据给UserAction配置的Action(struts-config.xml中)的name对应的formbean的name,这样才会将数据填充到这个formbean中
UserForm userform = (UserForm) form;
if("aaa".equals(userform.getU_name())){
//这里的mapping对应action配置的name
return mapping.findForward("addSuccess");
}else {
return mapping.findForward("addFaild");
}
}
}
二、使用验证
- 参考博客
struts1.X的验证分为1.重写validate (继承ActionForm) 2.配置xml(继承ValidatorForm)两种方式,老夫以为第一种会更实用些,所以下文就是以重写的方式使用struts的验证
- 配置 struts-config.xml
- 配置action 的validate="true" input="xx.jsp"
<!--使用验证要添加validate="true" 默认是false; input="xxx.jsp" 代表验证失败将值返回的页面 供回显使用-->
<action path="/User" type="com.myframe.struts.action.UserAction" name="userForm"
scope="request" parameter="method" validate="true" input="/addUser.jsp">
<!-- redirect默认是false-->
<forward name="addSuccess" path="/addSuccess.jsp" ></forward>
<forward name="addFaild" path="/addFaild.jsp" ></forward>
</action>
- 重写userform的validate方法
@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(u_name==null||u_name.length()<=3){
errors.add("u_name",new ActionMessage("error.login.u_name",u_name));
}
if(u_pwd==null||u_pwd.length()<=3){
errors.add("u_pwd",new ActionMessage("error.login.u_pwd",u_pwd));
}
return errors;
}
- 配置资源文件properties
- properties编码设置自动编译(setting->file encoding->transparent)
#UserForm验证
error.login.u_name=用户名不能为空或长度不能小于4
error.login.u_pwd=密码不能为空或长度不能小于4
- jsp中使用
<%--引入标签--%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%--使用html:form标签--%>
<html:form action="/User.do">
<!-- name的值要和formbean的值对应 -->
<%--使用html:text、html:errors标签 其中property对应表单的name值--%>
username: <html:text property="u_name"/><html:errors property="u_name"></html:errors><br>
password: <html:text property="u_pwd"/><html:errors property="u_pwd"></html:errors><br>
<input type="hidden" name="method" value="addUser"/>
<input type="submit" value="submit" />
</html:form>
三、标签的使用
struts1.3学习的更多相关文章
- Struts1框架学习笔记
类实现DispatchAction 类似于ActionServlet ActionServlet 来自于 org.apache.struts.action 包,它继承自 HttpServlet, ...
- web学习:Spring2.5+Hibernate3.3+Struts1.3整合小例子
写android有段时间了,感觉思维越写越狭窄,考虑问题越来越局限了,看不到一个项目整体的设计和构架,觉得很有必要多多写一些大型的框架性的东西来提高自己的视野. 从接触java到现在一年多了,在我的印 ...
- J2EE学习篇之--Struts1详解
今天来看一下Struts1的相关知识,其实Struts现在是出名的,每个Web开发者都会知道的,也是现在比较流行的框架,下面就来看一下我们为什么要用Struts框架呢? 摘要 1.建立在mvc这种好的 ...
- 【SSH学习笔记】—从配置Struts1环境到简单实例
以下我将从一个简单点的计算器实例,介绍struts1的环境配置,以及其重要的两个核心类:ActionForm和Action 简单计算器实现思路: 1.提供一个输入界面,输入两个数字和运算符(+.-. ...
- 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
部分博客,,先后实施了Struts抽样.现在我们来分析这个样本.具体解释Struts1. Struts1的几个核心组件是值得我们注意的: (1)ActionServlet(核心控制器). (2)Act ...
- 软件架构设计学习总结(18):MVC三层架构在各框架(jsp+servlet + Struts1+ Struts2+ springMVC)中的特征
1.基于web开发中最原始的jsp+Servlet 图形化理解jsp+servlet结构: 1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet ...
- Struts2重新学习2之struts2和struts1的区别
1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Acti ...
- 【SSH之旅】一步步学习Struts1框架(二):Struts实例
从上篇博客能够看到,事实上Struts1框架就是封装了一些页面的转向.数据类型的转换,去除冗余的if else推断.除了这些,事实上还封装了一些我们寻经常使用的JSTL标签库,文件上传等等. 以下看怎 ...
- Struts1 部分源码学习
Struts1工作原理 1.系统初始化(读取配置):初始化ModuleConfig对象 Struts框架是一个总控制器(ActionServlet)是一个Servlet,在web.x ...
随机推荐
- 8.8.1 Super关键字
Super关键字 1.super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象. 2.super代表的是当前子类对象中的父类型特征. //通过子类的构造方法去调用父类的构造 ...
- Android笔记: ViewPager基本用法
ViewPager控件可以实现多个View(或fragment)滑动切换的效果,属于比较常用的控件.下面用一个简单的例子介绍一下该控件的基本用法. 首先是布局文件activity_view_pager ...
- 【前端】react学习阶段总结,学习react、react-router与redux的这些事儿
前言 借用阮一峰的一句话:真正学会 React 是一个漫长的过程. 这句话在我接触react深入以后,更有感触了.整个react体系都是全新的,最初做简单的应用,仅仅使用react-tools打包js ...
- Python之set
set set集合,是一个无序且不重复的元素集合 set的优势 set 的访问数度快 set 原生解决数据重复问题 # 数据库中原有 old_dict = { "#1":{ 'ho ...
- CDH-5.7.1离线安装
CDH-5.7.1离线安装 参考自:http://blog.csdn.net/jdplus/article/details/45920733 1.文件下载 CDH (Cloudera's Dist ...
- PKIX path building failed
百度这个问题,很多人都说是证书问题.至于是什么证书呢?搞了老半天原来是 /Java/jre/lib/security/cacerts不正确.换了个jdk版本就解决这个问题了. 可靠的jdk1.8下载链 ...
- jdk不同版本对String拼接的优化分析
1. 测试demo代码 测试循环中字符串拼接优化 public class ForTest { public static void main(String[] args) { String a = ...
- [C#] 如何截取完整的网页图片
前言 有时候浏览到非常有用的网页时,我们会选择将它加入到收藏夹中,但是网站一旦过期,以后就看不到这个网页了.当然也可以将网页打印成PDF文档保存.最新的Windows 10中的Edge浏览器支持将网页 ...
- 字符编码知识简介和iconv函数的简单使用
字符编码知识简介和iconv函数的简单使用 字符编码知识简介 我们知道,在计算机的世界其实只有0和1.期初计算机主要用于科学计算,而我们知道一个数,除了用我们常用对10进制表示,也可以用2进制表示,所 ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...