struts2.0简单例子

合集下载

Struts2.0应用实例宝典

Struts2.0应用实例宝典

Struts2.0登陆小例子2008-03-15 10:44转的:这几天没事,看这论坛里都在谈struts2,所以也起了好奇心,自己做了一个简单的登陆,实现了从login.jsp,提交数据给服务器,服务器判断提交的数据是否为用户名:"zhangsan",密码:"lisi",如果是就显示"zhangsan ,欢迎登陆.,还有就是支持中文显示,给大家一个参考...接触时间不长,请大家多提意见...先去官方网站上下载struts2的jar包,下载地址是:/struts/binaries/struts-2.0.11.1-all .zip(其中包含原代码,文档和例子,一个比较全的).说明一下,我的环境是xp的系统,myeclipse5.1的.然后就创建一个web工程.在web-inf目录下的lib目录中添加jar包,commons-logging-1.0.4,freemarker-2.3.8,ognl-2.6.11,struts2-core-2.0.11.1,xwork-2.0.4等,这些包是什么作用,我也不太清楚,我刚接触太不到一天,这个web.xml文件中配置的好象是一个过滤器.然后把web.xml文件内容配置成如下: <?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><!-- <web-app id="WebApp_9" version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd">--><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><!-- <init-param></init-param>--></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>/login.jsp</welcome-file></welcome-file-list></web-app>然后创建action类,在struts2中不需要actionform类,并且struts2中的action也不需要继承一个特定的action类,但一般情况他都会继承这个类com.opensymphony.xwork2.ActionSupport,然后重写他的execute()方法,该方法返回一个字符串,学过jsf的朋友应该知道的,这和jsf有点相似,刚才说他不需要actionform,其实现在的action中定义属性即可,然后给他们getter和setter方法,LoginAction代码如下: package com.struts2;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport ...{/** *//****/private static final long serialVersionUID = 1L;private String userName;private String userPass;public String getUserName() ...{return userName;}public void setUserName(String userName) ...{// org.apache.struts2.dispatcher.FilterDispatchererName = userName;}public String getUserPass() ...{return userPass;}public void setUserPass(String userPass) ...{erPass = userPass;}@Overridepublic String execute() throws Exception ...{// TODO Auto-generated method stubif ("zhangsan".equals(userName) &&"lisi".equals(userPass)) ...{ActionContext.getContext().getSession().put("user", getUserName());return SUCCESS;} else ...{return INPUT;}}}接着就来配置这个action,这个文件的名字叫做struts.xml有点象struts1中的struts-config.xml文件.他的存放路径我现在只知道可以放在classes下,也就是src目录下,action中配置了action路径,struts.xml代码如下: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts><!-- <constant name="struts.enable.DynamicMethodInvocation"--> <!-- value="false" />--><!-- <constant name="struts.devMode" value="false" />--><package name="struts2" extends="struts-default"><action name="loginAction" class="com.struts2.LoginAction"> <result name="input">/login.jsp</result><result name="success">/suc.jsp</result></action><!-- <action name="....." class="....."method=".....">--><!--其中name可以随便起,这是以后自己要用到的,class就是类的全名,刚才说action不需要继承某个类,也就是说他可以不遵循某中规范,可以在自定义的action中自定义处理方法--><!-- <result>........</result> 相当与actionforward--><!-- </action>--></package></struts>编写jsp文件,很简单如代码: <%...@ page language="java"import="java.util.*" pageEncoding="utf-8"%><%...@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'login.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><s:form action="loginAction"><%...-- <form action="LoginAction.action"method="post">--%><s:textfield name="userName" label="用户名"></s:textfield> <br><s:password name="userPass" label="密码"></s:password><br><s:submit></s:submit><%...-- </form>--%></s:form><br></body></html>suc.jsp文件如下: <%...@ page language="java" import="java.util.*" pageEncoding="utf-8"%><jsp:directive.page import="com.struts2.LoginAction" /><%...@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'suc.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>${er },欢迎登陆。

struts2框架快速入门小案例

struts2框架快速入门小案例

struts2框架快速⼊门⼩案例struts2快速⼊门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导⼊jar包 struts2的⽬录结构: apps: 例⼦程序 docs:⽂档 lib:struts2框架所应⽤的jar以及插件包 src:源代码 core 它是struts2的源代码 xwork-core struts2底层使⽤了xwork,xwork的源代码 注意:在struts2开发,⼀般情况下最少导⼊的jar包,去apps下的struts2-blank⽰例程序中copy 2.创建index.jsp页⾯ 3.对struts2框架进⾏配置 1.web.xml⽂件中配置前端控制器(核⼼控制器)-----就是⼀个Filter(⽬的:是为了让struts2框架可以运⾏。

) <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping> 2.在src下(对应Tomcat的classes下)创建⼀个struts.xml配置⽂件 ,这个是struts2框架配置⽂件(⽬的:是为了struts2框架流程可以执⾏。

) 4.创建⼀个HelloAction类//要求,在HelloAction类中创建⼀个返回值是String类型的⽅法,注意,⽆参数。

Struts2.0

Struts2.0

第一个Struts2应用
例子中使用到的cn.itcast.action.HelloWorldAction类如下: package cn.itcast.action; public class HelloWorldAction{ private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute() throws Exception{ this.message = "我的第一个struts2应用"; return "success"; } }
Struts2的配置文件
Struts2默认的配置文件为struts.xml ,FilterDispatcher 过滤器在初始化时将会在WEB-INF/classes下寻找该文件, 该文件的配置模版如下: <?xml version="1.0" encoding="UTF-8"?> <!DOபைடு நூலகம்TYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"> <struts> </struts>
Action名称的搜索顺序
1.获得请求路径的URI,例如url是: http://server/struts2/path1/path2/path3/test.action 2.首先寻找namespace为/path1/path2/path3的package,如 果存在这个package,则在这个package中寻找名字为test的 action,如果不存在这个package则转步骤3; 3.寻找namespace为/path1/path2的package,如果存在这 个package,则在这个package中寻找名字为test的action,如 果不存在这个package,则转步骤4; 4.寻找namespace为/path1的package,如果存在这个 package,则在这个package中寻找名字为test的action,如果 仍然不存在这个package,就去默认的namaspace的package 下面去找名字为test的action,如果还是找不到,页面提示找 不到action。

struts2.0快速入门实战文档-2

struts2.0快速入门实战文档-2

今天我说2.0一些常用的技术方法。

上次我们只是刚刚入门。

今天深入点,并且今天就接触struts的课程,在我们做项目的时候在进一步深入,今天的点主要有以下几个.1,国际化语言的问题。

就是多语言的配置2,后台传数据到前台显示的问题。

就是在后台获取了数据返回jsp用struts标签如何显示打开以前的项目。

国际化语言的问题。

就是多语言的配置非常简单,在我们项目的src点右建,分别添加3个文件struts.properties –配置文件内容如下struts.custom.i18n.resources=globalMessagesglobalMessages_en_US.properties –英文属性文件内容如下name=User NameglobalMessages_zh_CN.properties --中文属性文件内容如下name=姓名每个就一行启动服务。

使用方法有两个,打开index.jsp文件1,看到以前的这一句<s:textfield name="name"/>改成<s:textfield name="name" label="%{getText('name')}"/>刷新,看效果2, <s:text name="name"/>然后把你的浏缆器的墨认语言改成en-us看看,系统会自动显示中文或英文。

下面我们就说后台数据到前台jsp中的显示。

1,那个包下建个User.java的类package com.xp1204.struts20;public class User {private String name;private String sex;public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}2,打开我们的HelloChina.java文件,改动下在execute方法中加入如下代码HttpServletRequest request = ServletActionContext.getRequest();User user = new User();user.setName("xyj");user.setSex("男");request.setAttribute("user", user);这几句看得懂吗,有问题可以提出来然后我们在hellochina.jsp中,我们显示,加入下面两行.<s:property value="# " /><Br><s:property value="# er.sex" />是不是显示了。

【java开发系列】——struts2简单入门示例

【java开发系列】——struts2简单入门示例

【java开发系列】——struts2简单⼊门⽰例上篇推荐:前⾔ 最近正好有时间总结⼀下,过去的知识历程,虽说东西都是⼊门级的,⾼⼿肯定是不屑⼀顾了,但是对于初次涉猎的⼩⽩们,还是可以提供点参考的。

struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。

过去,我们⽤jsp和servlet搭配,实现展现时,⼤体的过程是: 1 jsp触发action 2 servlet接受action,交给后台class处理 3 后台class跳转到其他的jsp,实现数据展现 现在有了struts2,实现过程变为 1 jsp出发action 2 struts2拦截请求,调⽤后台action 3 action返回结果,由不同的jsp展现数据 下⾯我们看下,需要的jar包 前⾯两个是apache commons的jar包,暂且忽略 freemarker提供了另⼀种展现⽅式 ognl提供了OGNL表达式 struts2-core提供struts2核⼼包 xwork-core由于struts2很多事基于webwork的,因此也需要这个的核⼼包 我们提供了三个jsp登陆界⾯login.jsp1 <%@ page language="java" contentType="text/html; charset=GBK"2 pageEncoding="GBK"%>3 <%@taglib prefix="s" uri="/struts-tags"%>4<html>5<head>6<meta http-equiv="Content-Type" content="text/html; charset=GBK">7<title><s:text name="loginPage"/></title>8</head>9<body>10<s:form action="login">11<s:textfield name="username" key="user"/>12<s:textfield name="password" key="pass"/>13<s:submit key="login"/>14</s:form>15</body>16</html>登陆成功界⾯welcome.jsp<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><%@taglib prefix="s" uri="/struts-tags"%><html><head><title><s:text name="succPage"/></title><meta http-equiv="Content-Type" content="text/html; charset=GBK"></head><s:text name="succTip"><s:param>${er}</s:param></s:text><br/></body></html>登陆失败界⾯error.jsp<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><%@taglib prefix="s" uri="/struts-tags"%><html><head><title><s:text name="errorPage"/></title><meta http-equiv="Content-Type" content="text/html; charset=GBK"></head><body><s:text name="failTip"/></body></html> 当login.jsp触发action时,就会向后抬发送login.action的请求,这个请求被后台拦截,交给struts.xml中配置的action处理1<?xml version="1.0" encoding="GBK"?>2<!DOCTYPE struts PUBLIC3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"4 "/dtds/struts-2.1.7.dtd">5<struts>6<!-- 指定全局国际化资源⽂件 -->7<constant name="struts.custom.i18n.resources" value="mess"/>8<!-- 指定国际化编码所使⽤的字符集 -->9<constant name="struts.i18n.encoding" value="GBK"/>10<!-- 所有的Action定义都应该放在package下 -->11<package name="test" extends="struts-default">12<action name="login" class="com.test.action.LoginAction">13<result name="error">/error.jsp</result>14<result name="success">/welcome.jsp</result>15</action>16</package>17</struts>下⾯是LoginAction的代码,可以看到成功登陆后,程序把username写⼊session中。

struts2.0快速入门实战文档-1

struts2.0快速入门实战文档-1

o1,新建一个web项目,方法好象是file—new –project—myeclipse—j2ee---web project建好后如下我们把struts2.0的包copy到lib下注意,只copy 5个jar文件就可以了,多了出问题的如下commons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.8.jarxwork-2.0.3.jar然后打开webroot/web-inf/web.xml内容改成如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"><web-app><display-name>Struts 2.0 test xp1204</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list></web-app>如下图如下然后finish改下他的内容<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><include file="struts-default.xml"/></struts>如下图到这里新建一个jsp文件测试下,看看我们的web可以运行不结果如下我们发布项目测试下,发布在前面环境测试就说过了的,这里不重复了就两步一是发布,二是启动.然后在ie中看看…结果出来了在上面的项目中,我们已经引入了struts2.0,但是没有使用,现在我们开始使用1,首先建个包,我建的是com.xp1204.struts202,在包上右键新建一个类HelloChina,这类就是个action如下图Name中输入HelloChina和superclasee中输入com.opensymphony.xwork2.ActionSupport 然后点finish改行修改下刚才建的这个类package com.xp1204.struts20;import com.opensymphony.xwork2.ActionSupport;public class HelloChina extends ActionSupport { private String name;public String getName() {return name;}public void setName(String name) { = name;}public String execute() {name = "Hello China, " + name + "!";return SUCCESS;}}如下图然后我们在配置文件struts.xml中来配置(映射)下这个action,改后如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><include file="struts-default.xml"/><package name="com.xp1204.struts20" extends="struts-default"> <action name="HelloChina"class="com.xp1204.struts20.HelloChina"><result>HelloChina.jsp</result></action></package></struts>然后我们修改我们开始的index.jsp文件然后修改内容为<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>HelloChina</title></head><body><h3>HelloChina : </h3><s:form action="HelloChina">Name: <s:textfield name="name" /><s:submit /></s:form></body></html>如下图然后新建HelloChina.jsp文件,就和建index.jsp一样的建,然后修改内容为<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>HelloChina</title></head><body><h3><s:property value="name" /></h3></body></html>如下图到这里就基本完了,从新启动我们的项目Ie打开index.jsp文件输入东西,然后submit看看效果哈哈,到这里,最简单的struts2.0就学会了,大家体会下因为我没做个2.0的项目,所以现在只能给大家这点指引了.以后我了解更多,会更新的。

Struts2简单示例

Struts2简单示例

Struts2增删改查例子UserBean//要添加set,getpublic class UserBean{private Long id;private String name;private String password;private int age;private Date birthday;private Long sex;private Set<Long> likes;private String des;//描述}public class LikeBean{private Long id;private String name;}FormActionpublic class FormAction{//属性要生成get,set//标记(添加,修改)private String tip;private UserBean userBean;private List<LikeBean> likeList;private List<UserBean> userList;//到列表页面public String list(){userList =new ArrayList<UserBean>();userList.add(new UserBean("abc",19,new Date())); userList.add(new UserBean("def",70,new Date())); userList.add(new UserBean("ghi",40,new Date()));return"list";}//到添加页面public String toAdd(){likeList =new ArrayList<LikeBean>();likeList.add(new LikeBean(new Long(1),"上网")); likeList.add(new LikeBean(new Long(2),"读书")); likeList.add(new LikeBean(new Long(3),"游戏"));tip ="add";return"info";}//添加方法,Struts2会自动把对应的值赋值给userBeanpublic String add(){System.out.println(userBean);return"toList";}//到更新页面,取出值,设置标记public String toUpdate(){likeList =new ArrayList<LikeBean>();likeList.add(new LikeBean(new Long(1),"上网"));likeList.add(new LikeBean(new Long(2),"读书"));likeList.add(new LikeBean(new Long(3),"游戏"));tip ="update";System.out.println("update name:"+userBean.getName()); userBean =new UserBean("update",100,new Date());userBean.setId(new Long(101));userBean.setSex(new Long(2));userBean.setDes("Struts2用户");Set<Long> likes =new HashSet<Long>();likes.add(new Long(2));likes.add(new Long(3));userBean.setLikes(likes);return"info";}//更新方法public String update(){System.out.println(userBean);return"toList";}//删除方法public String delete(){System.out.println("del name:"+userBean.getName());return"toList";}}struts.xml配置<struts><package name="form"namespace="/form"extends="struts-default"> <!-- 使用通配符调用多个方法,method为*对应的字符串 --><action name="userAction_*"class="com.struts2.form.FormAction" method="{1}"><!-- 方法返回的字符串对应name,再转发到页面 --><result name="list">/form/list.jsp</result><result name="info">/form/info.jsp</result><!-- 重定向Action,可以有Action名字和空间,参数 --><result name="toList"type="redirectAction"><!-- 空间参数,不写代表和当前Action同一个空间<param name="namespace">form</param>--><!-- 重定向Action的名称 --><param name="actionName">userAction_list</param><!-- url带的参数,${}是动态参数,值为Action的属性userBean中name的值 --><param name="userName">${}</param><param name="userAge">${userBean.age}</param></result></action></package></struts>jsp页面1.list(列表页面)<!-- 添加标签 --><%@ taglib prefix="s" uri="/struts-tags" %><div><ahref="${pageContext.request.contextPath}/form/userAction_toAdd.action">添加</a></div><div><!-- 判断用户是否为空 --><s:if test="(userList!=null)&&(!userList.isEmpty())"><div>用户列表</div><!-- 遍历用户 --><s:iterator value="#erList"id="u"status="st"><s:property value="#st.index+1"/>&nbsp;<s:property value="#"/>&nbsp;<s:property value="#u.age"/>&nbsp;<!-- 格式化日期 --><s:date name="#u.birthday"format="yyyy-MM-dd HH:mm:ss"/>&nbsp;&nbsp;&nbsp;&nbsp;<ahref="${pageContext.request.contextPath}/form/userAction_toUpdate.action?use=${}">修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<ahref="${pageContext.request.contextPath}/form/userAction_delete.action?userB =${}">删除</a><br/></s:iterator></s:if><s:else><div>无用户</div></s:else></div>.jsp(添加和修改页面)<!-- 添加标签 --><%@ taglib prefix="s" uri="/struts-tags" %><!-- 显示标记(添加/修改) --><s:property value="tip"/><!-- action="userAction_%{tip}"tip为Action中的标记变量 submit不加method --><s:form action="userAction"namespace="/form"method="POST"><!-- userBean.id为Action中属性userBean中id的值 --><s:hidden name="userBean.id"></s:hidden><s:textfield name=""label="用户名"></s:textfield><s:textfield name="userBean.age"label="年龄"></s:textfield><s:textfield name="userBean.birthday"label="生日"><!-- 格式化日期 --><s:param name="value"><s:date name="userBean.birthday" format="yyyy-MM-dd"/></s:param></s:textfield><!-- 密码不能回填 --><s:password name="userBean.password"label="密码"></s:password><s:textarea name="userBean.des"label="描述"cols="35"rows="8"></s:textarea><!-- 这种checkbox显示出来是一行只有一个checkbox<s:iterator value="likeList"><s:checkbox name="userBean.likes" label="%{name}" fieldValue="%{id}"></s:checkbox></s:iterator>--><!-- 这种是一行多个 --><s:checkboxlist list="likeList"name="userBean.likes"listKey="id"listValue="name"label="爱好"></s:checkboxlist><!-- 下拉框<s:select list="likeList" listKey="id" listValue="name" headerKey="-1" headerValue="请选择爱好"></s:select>--><!-- value="1" 设置默认,但是好像设置了不能回填 --><s:radio list="#{'1':'男','2':'女'}"label="性别"name="userBean.sex"></s:radio><s:submit value="%{tip}"id="submitBut"method="%{tip}"></s:submit></s:form>。

struts2入门案例

struts2入门案例

struts2入门案例Struts2是一种基于MVC架构的Web应用程序框架。

本文将围绕“Struts2入门案例”为主题,向读者介绍如何使用Struts2创建一个简单的Web应用程序。

一、环境准备在开始之前,需要先准备好以下工具和环境:1. Java开发环境2. Struts2框架3. Tomcat服务器二、创建项目1. 打开Eclipse IDE,并选择“File” -> “New” -> “Dynamic Web Project”。

2. 输入项目名,并选择Tomcat服务器。

3. 在项目中创建一个名为“WEB-INF”的文件夹。

4. 在“WEB-INF”文件夹中创建一个名为“lib”的子文件夹。

5. 下载最新版本的Struts2.jar文件,并将其复制到“lib”文件夹中。

三、配置Struts21. 打开“struts.xml”文件。

2. 在<struts>标签中,添加以下代码:```<package name="default" extends="struts-default"><action name="hello" class="com.example.HelloWorldAction"> <result name="success">/hello.jsp</result></action></package>```三、创建Action类1. 在项目包中创建一个名为“com.example”的包。

2. 在“com.example”包中创建一个名为“HelloWorldAction”的Java类。

3. 在Java类中添加以下代码:```package com.example;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport { private String message;public String execute() throws Exception {message = "Hello World!";return SUCCESS;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}```四、创建JSP文件1. 在Web应用程序的根目录下创建一个名为“hello.jsp”的JSP文件。

struts2_超链接与action使用

struts2_超链接与action使用

Struts2 超链接和 action 使用Struts2.0 链接标签Web 应用区别于普通的站点之处在于Web 应用可以创建一个动态的响应。

为了使从一个页面中链接一个动态数据变得简单,Struts2 框架提供了一系列的标签。

Struts 标签的一种用法是创建链接到其他 Web 资源,特别是针对那些在本地应用中的资源。

1.普通链接Web 程序中最普通的应用是链接到其他页面,下面看 Welcome.jsp。

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>Welcome</title><link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet"type="text/css"/></head><body><h3>Commands</h3><ul><li><a href="<s:url action="Login_input"/>">Sign On</a></li><li><a href="<s:url action="Register"/>">Register</a></li></ul></body></html>1.1 说明1.<%@ taglib prefix="s" uri="/struts -tags" %>此句表示导入 struts 标签,并以 s 为前缀。

第一个struts2实例——HelloWorldpdf

第一个struts2实例——HelloWorldpdf

2、下载struts2包,我的版本是struts-2.3.8-all,解压,打开lib文件夹,里面都是jar文件,全部选中,复 制。
回到 Eclipse,项目下的WebContent-->WEB-INF-->lib目录,粘贴。
3、在 WEB-INF 目录下,新建一个xml文件,文件名web.xml,代码如下:
</filter>
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list> <welcome-file>index.html</welcome-file>
<display-name>Struts Blank</display-name>
<filter> <filter-name>struts2</filter-name> <filter-
class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filterclass>
public class tohello {
private String message; public String getMessage() {
return message; } public void setMessage(String message) {

第一章Struts2.0入门介绍

第一章Struts2.0入门介绍

目录第一章、Struts2.0入门基础 (2)1.1 框架技术的概述 (2)1.1.1 框架的概述 (2)1.1.2 为什么使用框架技术 (2)1.1.3 JAVA流行的框架技术 (2)1.1.4 MVC思想 (2)1.2 Struts 2的简介 (3)1.2.1 Struts 2的起源 (3)1.3 Struts 2环境搭建及工程目录介绍 (4)1.3.1需要准备的软件环境 (4)1.3.2搭建开发环境 (4)1.3.3 工程目录介绍 (7)1.4 Struts2.0的第一个简单案例 (8)1.4.1用户请求开始 (8)1.4.2 实现控制器 (8)1.4.3配置Action (9)1.5 使用Struts2完成简单的提交处理 (10)1.5.1使用Strut2完成简单的提交处理 (10)1.6 Struts 2的运行原理 (12)1.7 本章总结 (13)案例一:编写添加商品功能 (14)1.1模型的名称部分 (14)1、商品(product)的属性 (14)2、编写输入商品信息表单页面 (15)3、编写ProductAction控制器类 (15)4、在struts.xml文件中配置ProductAction代码如下: (15)5、编写保存成功显示页面 (16)6、运行及改进 (16)练习和作业 (17)第一章、Struts2.0入门基础1.1 框架技术的概述1.1.1 框架的概述1.1.2 为什么使用框架技术什么是框架技术?1.1.3 JAVA流行的框架技术1.1.4 MVC思想MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。

MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

起初,MVC模式是针对相同的数据需要不同显示的应用而设计的,其整体的效果如图所示:MVC结构在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。

struts2入门实例教程详解

struts2入门实例教程详解

Struts2教程教程1:在本教程中使用的工具和程序库的版本如下:在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http://localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到去下载Struts2安装包。

要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。

struts2-core-2.0.11.1.jarxwork-2.0.4.jarcommons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarStruts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。

Struts2实际上是在Webwork基础上构建起来的MVC框架。

我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。

既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。

如果大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。

让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。

1. 安装Struts。

由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。

2. 编写Action类(一般从org.apache.struts.action.Action类继承)。

3. 编写ActionForm类(一般从org.apache.struts.action.ActionForm类继承),这一步不是必须的,如果要接收客户端提交的数据,需要执行这一步。

struts2简单示例

struts2简单示例

struts2简单⽰例今天写⼀个struts2的例⼦,⽬的是为了让⼤家明⽩struts2的基本流程,其实框架没有⼤家想象的那么难,说⽩了struts2的本质就是⼀个⼤的Servlet,即原本需要提交到Servlet处理的部分现在通过配置⽂件将其交给普通的Class类进⾏处理。

⾸先新建⼀个javaWeb项⽬,然后把struts2所依赖的包导⼊到lib下(可以百度⼀下也可以直接到官⽹上下载),然后在web.xml中对struts2进⾏配置,添加的内容如下:1<filter>2<filter-name>struts2</filter-name>3<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>4</filter>5<filter-mapping>6<filter-name>struts2</filter-name>7<url-pattern>/*</url-pattern>8</filter-mapping>在index.jsp中写如下代码:1<form method="post" action="testAction">2名称:<input type="text" name="name"/>3<input type="submit" value="提交"/>4</form>接下来是写struts的配置⽂件struts.xml,内容如下:1<?xml version="1.0" encoding="UTF-8" ?>2<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"3 "/dtds/struts-2.1.dtd">4<struts>5<package name="testaction" namespace="/" extends="struts-default">6<action name="testAction" class="com.struts.action.TestAction">7<result name="success">/success.jsp</result>8<result name="error">/index.jsp</result>9</action>10</package>11</struts>其中⼀个action对应⼀个响应,在index.jsp中action="testAction"所以此处action的name="testAction"这是⼀⼀对应的关系。

struts2的简单实例应用

struts2的简单实例应用

struts2的简单实例应⽤功能:本实例实现的功能是从输⼊界⾯输⼊⽤户名和密码,若⽤户名和密码正确转到成功界⾯,否则转到失败界⾯。

1)在创建了⼀个JavaWeb⼯程后,导⼊struts2的核⼼⽀持包库。

2)web项⽬右击-MyEclipse-add Stru-选择2.1版本-选择/*-src中多了⼀个struts.xml(配置所有的⼯作流)。

3)src-右击新建包:com.sxl.actions-新建class:LoginAction-继承⼀个超类Supperclass-Browser...-输⼊actionsu,出来⼀个ActionSupport,选择即可。

4)创建Action⽂件,进⼊LoginAction.java,创建字段,注意要有setter和getter⽅法,右击source-选择重写⽅法execute();(返回是⼀个字符串)。

package com.sxl.actions;import org.omg.CORBA.PRIVATE_MEMBER;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {private String name;private String pass;@Overridepublic String execute() throws Exception {System.out.println("获取:"+name+";"+"pass");if (name.equalsIgnoreCase("aaa")&&pass.equalsIgnoreCase("123")) {return "success";}return "failed";}public String getName() {return name;}public void setName(String name) { = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}}5)在struts.xml中,拖拽控件进⾏相关配置。

开源框架:Structs2.0入门学习(1)

开源框架:Structs2.0入门学习(1)

开源框架:Structs2.0入门学习(1)1.下一个项目开发用structs2.0现在开始学习JAVA中的这个技术了!Struts 是一组相互协作的类、servlet 和 JSP 标记,它们组成一个可重用的MVC 2 设计。

这个定义表示Struts 是一个框架,而不是一个库,但Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。

● Client browser(客户浏览器)来自客户浏览器的每个 HTTP 请求创建一个事件。

Web 容器将用一个 HTTP 响应作出响应。

● Controller(控制器)控制器接收来自浏览器的请求,并决定将这个请求发往何处。

就Struts 而言,控制器是以 servlet 实现的一个命令设计模式。

struts-config.xml 文件配置控制器。

● 业务逻辑业务逻辑更新模型的状态,并帮助控制应用程序的流程。

就Struts 而言,这是通过作为实际业务逻辑“瘦”包装的Action 类完成的。

● Model(模型)的状态模型表示应用程序的状态。

业务对象更新应用程序的状态。

ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级。

JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。

● View(视图)视图就是一个JSP 文件。

其中没有流程逻辑,没有业务逻辑,也没有模型信息-- 只有标记。

标记是使Struts 有别于其他框架(如Velocity)的因素之一。

Struts 的控制器是将事件(事件通常是HTTP post)映射到类的一个 servlet.正如您所料——控制器使用配置文件以使您不必对这些值进行硬编码。

时代变了,但方法依旧。

ActionForm 类ActionForm 维护 Web 应用程序的会话状态。

ActionForm 是一个抽象类,必须为每个输入表单模型创建该类的子类。

当我说输入表单模型时,是指 ActionForm 表示的是由 HTML 表单设置或更新的一般意义上的数据。

通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架中..

通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架中..

1.1如何应用Struts 2框架中的CheckboxInterceptor和prepare默认拦截器的应用实例1.1.1Struts 2框架中的CheckboxInterceptor默认拦截器的应用示例1、主要的功能此拦截器是针对checkbox表单控件的,当提交的表单里有checkbox时,默认情况下,如果没选中,提交的值是null;如果选中,提交的值是"true"。

CheckboxInterceptor的作用是当没选中checkbox时,提交一个指定的值,而不是null。

2、实现的原理你需要在页面中为每个checkbox指定一个名字为"__checkbox_"+checkbox名的hidden 控件,例如,如果表单有一个名为vip的checkbox,就需要一个名为__checkbox_vip的hidden。

默认的,这个事情不需要你来做,因为Struts2在checkbox的simple模板中已经为你做了,即下面这条语句:<input type="hidden" name="__checkbox_${?html}"value="${parameters.fieldV alue?html}"/>因此CheckboxInterceptor实现原理如下:当提交表单后,CheckboxInterceptor会在请求参数里查找名字以"__checkbox_"开头的参数,如果找到,继续在请求参数里找对应的checkbox参数,如果没找到(表示没有选中该checkbox),就给checkbox参数一个指定的值,默认的,这个值为"false"。

3、可以在struts.xml文件中为某个Action引用该拦截器时设置改变这个值如下示例是将其值改成"no":<interceptor-ref name="checkbox"><param name="uncheckedValue">no</param></interceptor-ref>默认情况下,请求每个action都会调用CheckboxInterceptor,因为在Struts2定义的默认拦截器defaultStack中包含了它。

struts2例子三【Action】整理文

struts2例子三【Action】整理文

struts2例⼦三【Action】整理⽂Action 的配置是 Struts2 框架的⼀个基础⼯作单元,每⼀个 Action 的配置都有对应的处理类,当⼀个请求和 Action 的 name 相匹配时,框架将根据所配置的 Action 映射来决定对请求的处理。

1、Action 映射配置在 Action 映射中可以指定 result types 、异常处理器( exception handlers )及拦截器,但是,只有Action 的 name 属性是必需指定的,其他属性也可以在 package 范围内进⾏定义,供该 package 下配置的所有 Action 引⽤。

如:<action name="Logon" class="tutorial.Logon"><result name="input">Logon.jsp</result></action>2、Action 名称及命名注意:如果在你的 action 的 name 中包含有斜线(如: <action name="xxxxxx/xxxxxx" class="xxxxxx.xxxxx"/> ),你需要在 struts.xml 中进⾏如下配置: <constant name="struts.enable.SlashesInActionNames" value="true"/> ,但是,启⽤该配置也会产⽣⼀些副作⽤。

具体-。

-问度娘警告:谨慎使⽤在 action 名称中包含点 (er) 、斜线 (create/user) 和横线 (create-user) 的情况,虽然 action 的名称定义⾮常灵活,但是,当在 action 的 name 中使⽤点、斜线或横线时,应该谨慎。

Struts2.0第04章Interceptor

Struts2.0第04章Interceptor

第四章 InterceptorInterceptor(拦截器)顾名思义就是在某个事件发生之前将其拦截,并插入相应的处理过程。

从这点上来看,拦截器类似于在Servelet规范中定义的Filter,但是Struts2的拦截器完全独立于Servelet的Filter,而且两者有着截然不同的实现。

Interceptor将很多通用的功能从Action中独立出来,大大减少了Action中重复的代码量,通过组装Interceptor可以使得通用的逻辑按照顺序执行,并且当业务逻辑顺序发生变化的时候也不需要重新编写代码,只需重新组装Interceptor即可,从而降低web应用的耦合性。

在开发Web应用的过程中,会碰到很多可以复用的模块,如果不采取任何策略,无疑会增加应用的重复代码量。

Interceptor就是Struts2对这些可复用的应用模块加以管理的策略。

通过Interceptor可以把通用的模块从Action中提取出来,供应用中的其它Action 应用,甚至是供其它项目复用。

4.1 Interceotor基础对于拦截器而言,最主要就是要清楚拦截器在什么时候开始被调用,以及Struts2中是如何实现拦截器,最后还要清楚Struts2中自带的拦截器有哪些,只有了解这些,才可以为以后使用拦截器打下基础。

4.1.1 Interceptor何时调用让我们来看看Interceptor到底在什么时候被调用,又是如何被调用。

首先让我们来分析com.opensymphony.xwork2.DefaultActionInvocation源代码看看一般的Action调用流程,注意下面的代码片断。

DefaultActionInvoation.java/*省略其他方法*/public String invoke() throws Exception {if (executed) {throw new IllegalStateException("Action has already executed");}if (interceptors.hasNext()) {InterceptorMapping interceptor = (InterceptorMapping) interceptors.next();resultCode = interceptor.getInterceptor().intercept(this);} else {resultCode = invokeActionOnly();}/*省略语句*/}在执行Action之前,Struts2会检查Action是否配置有拦截器,如果有,遍历所有拦截器并且执行之,如果对应的Action没有配置拦截器,那么Struts2将只执行Action。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts2.0是struts1.0和WebWork2.2合并版本,集成了两大流行MVC框架的优点,对struts框架来说是一个大的提升,同时也更大程度地简化了开发人员的开发过程。

这个例子实现了一个简单的登陆效果,操作步骤如下:1、首先,要从apache网站上下载struts2.0.11的完整包(/downloads.html),解压后需要找到下列几个文件:commons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.11.jarxwork-2.0.4.jar2、然后,我们就开始做第一个例子,新建web项目struts23、将上面列举的jar文件拷贝到项目struts2\WEB-INF\lib中,或添加自己的strust2.0用户库4、新建login.jspJava代码<?xml version="1.0" encoding="UTF-8" ?><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Insert title here</title></head><body><form action="login.action" method="post">username:<input type="text" name="username" /><p>password:<input type="password" name="password" /><p><input type="submit" name="Submit" value="提交" /></form></body></html><?xml version="1.0" encoding="UTF-8" ?><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Insert title here</title></head><body><form action="login.action" method="post">username:<input type="text" name="username" /><p>password:<input type="password" name="password" /><p><input type="submit" name="Submit" value="提交" /></form></body></html>struts1与struts2的区别:<form action="login.action" method="post">struts1通过servlet拦截所有发送过来以do结尾的请求,交有ActionServlet控制,决定由那个Action 进行处理5、新建result.jspJava代码<?xml version="1.0" encoding="UTF-8" ?><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Insert title here</title></head><body>username:${ername}<br>password:${requestScope.password}</body></html><?xml version="1.0" encoding="UTF-8" ?><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Insert title here</title></head><body>username:${ername}<br>password:${requestScope.password}</body></html>6、修改web.xmlJava代码<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>struts2.0</display-name><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2.0</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>struts2.0</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app><?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>struts2.0</display-name><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2.0</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2.0</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>struts1与struts2的区别:struts1是通过servlet做控制器struts2这里采用Filter过滤客户端发过来的请求7、创建loginAction.javaJava代码package com.action;public class loginAction {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) { ername = username;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String execute()throws Exception{ return "success";}}package com.action;public class loginAction {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;public String execute()throws Exception{return "success";}}struts1与struts2的区别:struts1必须继承Action,覆盖execute()struts2则不需要8、添加struts.xmlJava代码<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><result name="success">/result.jsp</result></action></package></struts><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><result name="success">/result.jsp</result></action></package></struts>struts1与struts2的区别:struts1在项目\WEB-INF\struts-config.xml配置文件struts2在项目\src\struts.xml配置文件9、o了,简单的例子以完成,下面是代码重构:使用struts2.0标签,添加校验功能1、修改login.jsp,改为使用struts2.0标签导入标签<%@ taglib prefix="s" uri="/struts-tags"%>把form表单替换为使用struts2.0标签Java代码<s:form action="login"><s:textfield name="username" label="username"></s:textfield><s:password name="password" label="password"></s:password><s:submit label="submit"></s:submit></s:form><s:form action="login"><s:textfield name="username" label="username"></s:textfield><s:password name="password" label="password"></s:password><s:submit label="submit"></s:submit></s:form>(使用标签可以自动换行,按钮默认右对齐)2、修改loginAction.javaloginAction继承ActionSupport重写Validate()验证方法Java代码@Overridepublic void validate() {if(null==this.getUsername()||"".equals(this.getUsername().trim())){ this.addFieldError("username", "username error");//添加错误信息}if(null==this.getPassword()||"".equals(this.getPassword().trim())){ this.addFieldError("password", "password error");//添加错误信息}}@Overridepublic void validate() {if(null==this.getUsername()||"".equals(this.getUsername().trim())){this.addFieldError("username", "username error");//添加错误信息}if(null==this.getPassword()||"".equals(this.getPassword().trim())){this.addFieldError("password", "password error");//添加错误信息}}3、修改struts.xml,添加出错返回的页面Java代码<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><!-- 添加出错返回的页面 --><result name="input">/login.jsp</result> <resultname="success">/result.jsp</result></action></package></struts><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><!-- 添加出错返回的页面 --><result name="input">/login.jsp</result> <resultname="success">/result.jsp</result></action></package></struts>struts1与struts2的区别:struts1需要在form里添加<html:errors/>标签,来提示错误处理的信息struts2则不需要匹配用户名为hello,密码为world1、修改loginAction.java下的execute()方法Java代码public String execute()throws Exception{if("hello".equals(this.getUsername().trim())&&"world".equals(this.getPassword().trim ())){return "success";}else{this.addFieldError("username", "username or password error");//定义在username上面提示错误信息return "failer";}}public String execute()throws Exception{if("hello".equals(this.getUsername().trim())&&"world".equals(this.getPassword().trim())){ return "success";}else{this.addFieldError("username", "username or password error");//定义在username上面提示错误信息return "failer";}}2、修改struts.xml,增加failer映射Java代码<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><result name="input">/login.jsp</result><result name="success">/result.jsp</result><!-- 增加failer映射 --><result name="failer">/login.jsp</result></action></package></struts><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="struts2.0" extends="struts-default"><action name="login" class="com.action.loginAction"><result name="input">/login.jsp</result><result name="success">/result.jsp</result><!-- 增加failer映射 --><result name="failer">/login.jsp</result></action></package></struts>3、全部完成,把制作好的web应用struts2拷贝到tomcat下运行。

相关文档
最新文档