入职两周了,项目是用struts1+ibatis框架搭建的,数据库是oracle,其他还行,关键是struts1之前没用用过,所以只好在网上狂查文档,最后大致整理了一些struts1的基本使用方法。

首先struts1需要引入的jar包:

因为我的IED是Myeclipse8.5直接引入的,实在是不想在struts的网站找jar了

struts1和2的第一个区别就是xml配置的位置不一样,struts1的配置文件是放在webRoot/WRB-INF/ib下,叫做struts-config.xml

基本格式是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings />
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
<form-beans />:配置bean的
<action-mappings />:配置action,和2中的<action>差不多
web.xml中的配置:
 <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/struts-config.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>

总的来说struts1就是一个大的servlet,在接收到request这个大的servlet就分配给对应的servlet,这个总的servlet隐藏在幕后,一般不用动,因为这里只是介绍怎么最基本的使用struts1,因为毕竟还是有一些公司的残余项目再用。如代码所示,这个servlet拦截所有的*.do的请求。

页面有3个,一个index.jsp,success.jsp,failuer.jsp,index.jsp有一个表单,后台做验证,如果用户名是jackie,密码是111111就跳转到success.jsp,不是的话就跳转到failuer.jsp.index.jsp的表单如下所示

<form action="check.do" method="post">
username:<input type="text" name="username">
<br/>password:<input type="password" name="password">
<br/>
<input type="submit" value="submit">
</form>

其实有<html:text>的标签,但是我不喜欢用,因为标签实在是记不过来,而且我一直在想,如果不用jsp改用html怎么办,所以我个人比较喜欢最原生的标签

success.jsp:

 <body>
check success!!! <br>
</body>

如果用户名为jackie,密码为111111就跳转到这个页面

failuer.jsp:

 <body>
check failuer!!! <br>
</body>

验证错误就跳转到failuer.jsp页面

好了,前台的页面写好了,就是后台了

首先,既然是框架,无论是否是古老的struts1,那么我最关心的就是他可不可以帮我封装一个bean,

我们先自己写一个user对象,这样struts1就可以帮助我们封装

package com.xiaoxia.form;

import org.apache.struts.action.ActionForm;

public class User extends ActionForm{
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

struts1中的bean与2不同,必须继承一个叫ActionForm的类,其他的和2一样,属性私有,提供get和set的方法。

其次,我们来写一个处理方法的类

Mycheck.java

package com.yourcompany.struts;

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 org.apache.struts.actions.DispatchAction;
import org.apache.struts.actions.ForwardAction; import com.xiaoxia.form.User; public class Mycheck extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//先把form转换成User的实体bean
User user = (User) form;
//做逻辑判断,如果输入合法,那么寻找一个success的forward
if(user.getUsername().equals("jackie") && user.getPassword().equals("111111")){
return mapping.findForward("success");
}
//输入非法,寻寻找一个failuer的forward
return mapping.findForward("failuer");
}
}

其中继承了struts1中一个叫Action的类,做处理的方法名字必须是execute,四个参数中,一个是mapping,主要是处理完后跳转用的,ActionForm是struts1中帮助我们封装的实体bean,剩下的request和response和servlet中的一样。

java代码写完了,最后得配置struts的配置xml,如图所示

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config>
<data-sources />
<form-beans>
<form-bean name="user" type="com.xiaoxia.form.User"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action name="user"
path="/check"
type="com.yourcompany.struts.Mycheck" scope="request" validate="false">
<forward name="success" path="/success.jsp" />
<forward name="failuer" path="/failuer.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" /> </struts-config>

其中在<form-beans>中配置相对应的实体bean,name是配置文件中实体bean的名字,type是对应的java类

<action-mappings>中配置对应的action,可以配置多个action,一个action对应一个action的标签,这里只配置一个,<action>中,name对应的是要使用的实体bean

path是对应的路径,在index.jsp中的form表单中的action就是“check.do”

type是对应的做处理的类

scope是使用的范围,validate是验证,通过验证才会调用相应的方法,但是现在前台验证一般都是js,所以这个属性估计没太大用

下面的子标签<forward>就是跳转的页面,那么是对应的名字,在java代码中就是mapping.findForward(".....")中间就是<forward>中对应的名字

其他的就不一一介绍了。这样一个demo的项目就可以开始跑了

关键是比较蛋疼的问题还有一个,就是如果我想规定它跳转到某个具体方法该怎么办(处女座的强迫症模式开启……)

其实也很简单,但是网上例子真心没找到,这里总结下,首先,你的Mycheck.java必须集成另一个类叫DispathAction,然后你就可以改名字了

package com.yourcompany.struts;

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 org.apache.struts.actions.DispatchAction;
import org.apache.struts.actions.ForwardAction; import com.xiaoxia.form.User; public class Mycheck extends DispatchAction { public ActionForward mycheck(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//先把form转换成User的实体bean
User user = (User) form;
//做逻辑判断,如果输入合法,那么寻找一个success的forward
if(user.getUsername().equals("jackie") && user.getPassword().equals("111111")){
return mapping.findForward("success");
}
//输入非法,寻寻找一个failuer的forward
return mapping.findForward("failuer");
}
}

其次,你必须在struts-config.xml的action中加一个属性:parameter

    <action name="user"
path="/check"
type="com.yourcompany.struts.Mycheck"
parameter="operate"
scope="request" validate="false">
<forward name="success" path="/success.jsp" />
<forward name="failuer" path="/failuer.jsp" />
</action>

parameter中随意指定,但是必须在提交过来的参数中有一个参数名为operate,相应的值对应方法名

2015-05-10 17:44:42

												

struts1的一些基本用法和操作的更多相关文章

  1. JQuery 相关用法和操作

    01-JQuery 基础语法: 1.使用JQuery必须先导入JQuery.x.x.xjs文件. 2.JQuery中的选择器: $(选择器).函数() ① $是JQuery的缩写,既可以使用JQuer ...

  2. H264码流解析及NALU

    ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639     /* bitstream fil ...

  3. AngularJS数据建模(转载)

    出处不明 我们知道,AngularJS并没有自带立等可用的数据建模方案.而是以相当抽象的方式,让我们在controller中使用JSON数据作为模 型.但是随着时间的推移和项目的成长,我意识到这种建模 ...

  4. 【Python3.6+Django2.0+Xadmin2.0系列教程之三(入门篇-下)】学生信息管理系统

    上一篇我们已经初步的构建起了一个学生管理系统的模型,现在接着来继续完善它吧. 1.上传图片/文件等资源 有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方 ...

  5. miniUI input设置默认值,js获取年月注意事项,数据库nvl函数使用

    2017-6-5周一,今天碰到的一个需求是:两税附征模块进入页面筛选时间默认值为当前月的上一个月,并根据筛选结果显示数据,我们用的框架为miniUI. 坑1: 默认值设置,刚刚接触miniUI,对里面 ...

  6. j2EE经典面试题

    1. hibernate中离线查询去除重复项怎么加条件? dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 2. http协议及端口,sm ...

  7. 16个PHP设计模式详解

    说明:该教程全部截选自实验楼教程[16个PHP设计模式详解]:主要介绍16个常用的设计模式的基础概念和技术要点,通过UML类图帮助理解设计模式中各个类之间的关联关系,针对每种设计模式都使用PHP完成了 ...

  8. ==和equals区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...

  9. Struts2 简介及学习方法介绍

    Struts2 =  webwork + struts1.x 尊重学习规律的操作 学习上痛苦的根源之一是只能走的时候逼我来跑 不是说深入的内容就不讲了,而是放到合适的时候讲 一段时间可以,长了集中不了 ...

随机推荐

  1. 为什么匿名内部类只能访问final变量【转】

    是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final.因为虽然匿名内部类在方法的内部,但实际编译的时候, ...

  2. ubuntu下面mysql,通过载入txt文件初始化数据表

    环境:ubuntu12.04   mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...

  3. ASDM through site to site VPN

    网上大部分文档只提到两个地方需要设置: 在6.2版本确实可以.但在7.2版本上只有用vpn client或anyconnect client连上的客户端可以用ASDM连上ASA,而通过site to ...

  4. Entity Framework EF6使用 MySql创建数据库异常解决办法

    EF6使用MySQL数据库时,第一次创建数据库出现“Specified key was too long; max key length is 767 bytes”错误,解决办法请见以下连接. htt ...

  5. HTML5-样式

    外部样式,内部样式,内链样式 <!DOCTYPE html> <html> <head lang="en"> <meta charset= ...

  6. 使用的组件:Layui

    Layui 经典模块化前端框架 由职业前端倾情打造,面向所有层次的前后端程序猿,中国最容易使用的前端UI解决方案 Layui 出蛋于2016年金秋,是一款带着浓烈情怀的国产前端UI框架,她追求极简,又 ...

  7. MyEclipse 自带的TomCat 新增部署的时候不显示 Deploy Location

    项目总是报错,添了删,删了又添了N次以后,发现添加部署的时候,Deploy Location 没有值了,Deploy Location 没有值在自带的Tomcat上就无法用浏览器浏览(Open in ...

  8. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  9. centos git 服务器搭建

    1.安装git sudo yum -y install git 2.创建用户与授权 # 找到 git_shell whereis git_shell /usr/bin/git-shell # 创建 g ...

  10. Linux3:more、which、find、chmod、tar、diff、grep、ps、netstat、uname

    more 类似cat,不过more不是将整个文件内容从上到下显示在屏幕上的,而是以一页一页的显示方便使用者逐页阅读.more最基本的指令就是space即往下翻一页,b即往回翻一页显示,而且还有搜索字符 ...