通配符(计应143 罗开波)

1.在web应用,有成千上万个action声明,可以利用struts2提供的映射机制把多个彼此相似的映射关系简化成一个映射关系,即通配符。通配符也就是“*”,通过使用通配符使对struts的配置相当简便,不过得遵循“约定优于配置”的原则。
2.新建一个web项目并在项目中添加struts:
1:点击项目右击选择myeclipse
2:选择Add Struts Capadilities
3:选择2.1
3.在src中兴建一个包,在包中新建一个两个class并继承ActionSupport接口。(注意:action执行的时候并不一定要执行execute()方法,也就是说execute()方法可以重写,也可以不重写)
3.1 UserAction.java类中添加两个方法 add,delete;

package actionuser;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
3.2 TeacherAction.java类中添加两个方法 add,delete;

package actionuser;

import com.opensymphony.xwork2.ActionSupport;

public class TeacherAction extends ActionSupport {
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}

4.在struts.xml编写:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devmode" value="true"></constant>
<package name="default" namespace="/user" extends="struts-default">
<action name="Success*" class="actionuser.UserAction" method="{1}">
<result>/Success{1}.jsp</result>
</action>
<action name="*_*" class="actionuser.{1}Action" method="{2}">
<result>/{1}_{2}Success.jsp</result>
</action>
</package>
</struts>
(注意:此处的“*”代表所有,即UserAction.java具有的所有方法,{1}=“*”,即当“*”代表“add”时,“{1}”也就代表“add”。也就是说“*”与“{}”内容一致。“*_*”代表的是:第一个“*”代表“TeacherAction”;第二个“*”代表“add”方法或者“delete”方法。)
5.创建jsp页面。
5.1创建 Successadd.jsp、Successdelete.jsp、Teacher_addSuccess.jsp、Teacher_deleteSuccess.jsp页面。页面内只需输出一句话即可。
如:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘AddSuccess.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>
user add success 添加成功 <br>
</body>
</html>
5.2 在index.jsp页面中写入(注意:要在index.jsp页面中写入<% String context = request.getContextPath(); %>不然会报错):

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% String context = request.getContextPath(); %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘index.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>
Action执行的时候并不一定要执行execute方法<br />
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br />
<a href="<%=context %>/user/Successadd">添加用户</a>
<a href="<%=context %>/user/Successdelete">删除用户</a>
<br />
前者会产生太多的action,所以不推荐使用
<br>
<a href="<%=context %>/user/Teacher_add">添加老师</a>
<a href="<%=context %>/user/Teacher_delete">删除老师</a>
</body>
</html>

6. 运行/调试

将该项目部署在tomcat上——>打开浏览器——>在地址栏输入该项目的名称——>回车


6.1 点击“添加用户”可以发现地址栏变化:action可以成功找到UserAction.java的“add”方法


6.2 点击“删除用户”可以发现地址栏变化:action可以成功找到UserAction.java的“delete”方法


6.3 点击“添加老师”可以发现地址栏变化:action可以成功找到TeacherAction.java的“add”方法


6.4 点击“删除老师”可以发现地址栏变化:action可以成功找到TeacherAction.java的“delete”方法

时间: 2024-08-02 19:20:18

通配符(计应143 罗开波)的相关文章

基于struts2登录(计应143 罗开波)

在项目中添加struts: 1:点击项目右击选择myeclipse 2:选择Add Struts Capadilities 3:选择2.11.在src中兴建一个包,在包中新建一个class并继承ActionSupport接口,在里面重写execute()方法.代码是:package Classwork; import com.opensymphony.xwork2.ActionSupport; //@SuppressWarnings("serial")public class Logi

基于struts2传值(计应143 罗开波)

struts2:实现c(servlet)层和v(jsp)层在项目中添加struts: 1:点击项目右击选择myeclipse 2:选择Add Struts Capadilities 3:选择2.11.在src中兴建一个包,在包中新建一个class并继承ActionSupport接口,在里面重写execute()方法.代码是:public class Actmnt extends ActionSupport { private String name; public String getName(

计应143 李田田

 认  识  自  己,创  造  未  来                不知不觉,大学的一年时光已经过去.回想起大一的一年,自己都不知道是怎么度过的.现在回想起来,貌似啥也没有学到.看到大一来的在军训,回想起自己刚来的时候,对大学满怀着憧憬    就是带着这份憧憬,一年的时间已经悄悄的过去. 今年暑假让我认识到了,没有一定的专业知识干的活是那么的累.暑假去了苏州去打工,跑到人力资源市场人是一批一批的.当时我就在想我们毕业时找工作,肯定比这更难,那时我更加迷茫,自己什么都不会拿什么去和别人争.

3月29日 计应143 陶顺利 struts实现c(servlet)层和v(jsp)层

在项目中添加struts2: 1:点击项目右击选择myeclipse 2:选择project facets 3:选择struts2 选择默认方式添加 1:新建一个action包,在新建一个类并继承ActionSupport这个接口,在里面重写 execute()方法.: public class Action extends ActionSupport { private String userID,password,userName; public String getUserID() {re

计应143 陶顺利 3月10日 基于MVC实现查询的功能

1.创建一个新的web项目命名为:ManangerSystem. 2.在src中创建entity(实体类),DBHelper,DAO,servlet,层. 3.在写实体类时一定要注意定义的类型一定要和数据库中的字段名相同.在DBHelper连接数据时一定要注意数据库名和连接数据库的密码. 4.在DAO层时注意引入的集合,获取的值,同时抛出的异常,当我在运行时DAO层出现的错误,我便测试DAO层.代码分别如下:        5.在servlet中实现跳转时也出现500的代码,根据以往做错时都是在

计应143 卞玉新

别让未来的你讨厌现在的自己 时间过得真快,一转眼我们就大二了,成为了去年令我们羡慕的学长学姐,我真的不知道是该高兴还是该难过.依稀的记得去年高考结束填报志愿的时候:依稀的记得去年暑假盼望大学生活开始的时候:依稀的记得去年军训的开学和辛苦.时间飞逝,一转眼这都只是曾经. 记得去年的,基本上没什么作业.大二一开学,陈老师就给我一下子弄懵了,让我们有一种辛辛苦苦十几年一夜回到解放前的感觉,好像一下子我们又回到了高中.......又好像是一记闷棍,把我们从梦中惊醒.也对,我们的大学生活不应该这样荒废,怎

关于计应151/152《软件工程》课程实践的安排

通过前一阶段的准备,同学们已经掌握了软件开发流程的相关知识,尽管部分知识有待后续课程解决,但已经具备开始实践的必要知识,因此,从下周一开始,我们的课程实践项目正式开始.具体安排如下: 1.整个开发活动以小组展开,在每一周结束时,小组要提交经过小组实践行动形成的文档,文档内容由我在班级博客上发布,并通过小组长的博客发布,标题格式为:计应XX班第X小组XXX(文档内容标题).文档的具体书写格式和小组的活动方式请参考教材有关章节的内容,这些我会在每次小组作业安排时提示. 2.每个小组成员,根据自己在参

用户故事(计应152班第五组)

一. 姓名:李少 性别.年龄:男,21 职业:大一新生 收入:每月生活费1000 知识层次和能力:大学生,喜欢上网,喜欢排球 动机.目的.困难:喜欢打排球.希望加入学校排球精英队:困难:不太清楚排球团队积分规则 用户偏好:体育运动 用户比例:不确定 典型场景:看学校排球精英队的各大比赛 典型描述:看多长场校比赛.但不太清楚规则.每次看的热血沸腾,但不知输赢在哪?? 二. 姓名:李一 性别.年龄:男,24 职业:研究生.校排球精英队队长 收入:每月生活费1600 知识层次和能力:研究生,极度热爱排

计应1班第4小组“排球比赛计分程序”的典型用户、创立场景、用户故事

姓名 张三 年龄 20 职业 在校大学生 收入 月生活费1200 知识层次和能力 大专生,学习计算机,对排球运动很是喜爱 动机,目的,困难 动机是喜欢看排球比赛,目的给中国队加油,困难是不是十分了解排球规则 用户 偏好 运动 用户比例 不确定 典型场景 看奥运会,为中国队加油 典型描述 快到奥运会期间,想看中国女排比赛,但不了解排球规则,所以想看这个排球比赛计分规则来了解,  以便更好的理解比赛 姓名 李四 年龄 50 职业 体育馆负责人 收入 一万/月 知识层次和能力 本科生毕业,管理一个体育