Struts2 ActionWildcard(通配符配置)约定优于配置

新建web project:struts2_0500_actionwildcard

Build Path

项目图:

  src:                  

    StudentAction.java

    TeacherAction.java

    struts.xml

  WebRoot:

    index.jsp

    Student_add.jsp

    Student_delete.jsp

    Student_edit.jsp

    Student_find.jsp

    Teacher_add.jsp

    Teacher_delete.jsp

 ------------------------------------Hongten---------------------------------

struts.xml

代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <constant name="struts.devMode" value="true" />
 <package name="Student" namespace="/" extends="struts-default">
  <action name="*_*" class="com.b510.hongten.{1}Action">
   <result>
    /{1}_{2}.jsp
            </result>
  </action>
  
  
  <action name="Student_add" class="com.b510.hongten.StudentAction"
   method="add">
   <result>
    /Student_delete.jsp
            </result>
  </action>
 </package>
</struts>

 ------------------------------------Hongten---------------------------------

 ------------------------------------Hongten---------------------------------

在这里,我们没有去添加Teacher_edit.jsp和Teacher_find.jsp,要想说明的是,如果我们要添加的时候

直接添加即可,不会因为我们又添加了新的的文件,而影响整个程序的运行。但是添加的时候

一定要遵守"约定优于配置"的原则。如:Teacher的首字母一定要大写,Teacher_edit.jsp就得一定要以

这种形式去写。不然我们还是免不了去修改配置文件;

还有一个就是,我们看到struts.xml文件中有两个action,其实这里只是为了做一个小测试二用的:

我们的程序中只用:

  <action name="*_*" class="com.b510.hongten.{1}Action">
   <result>/{1}_{2}.jsp</result>
    </action>

就足可以使我们的程序很好的运行起来,但是添加了第二个action后:

  <action name="Student_add" class="com.b510.hongten.StudentAction"
   method="add">
   <result>/Student_delete.jsp</result>
   </action>

这时候就会出现我们访问一个url:http://localhost:1000/struts2_0500_actionwildcard/Student_add

的时候,是去的是:Student_delete.jsp 这个页面,而不是我们的Student_add.jsp页面,这是为什么呢?

原因是:在struts2中,当我们访问的url来到的时候,服务器就会在struts.xml文件中找最接近这个url的action(如果

是同一个包中),我们很容易发现:

  "*_*"和"Student_add" 和url相比较,显然是后者要接近,所以选择了Student_delete.jsp,而非Student_add.jsp
 

 ------------------------------------Hongten--------------------------------- 

 ------------------------------------Hongten---------------------------------

StudentAction.java

代码:

package com.b510.hongten;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 
 * @author XHW
 * 
 * @date 2011-7-30
 * 
 */
public class StudentAction extends ActionSupport {
 private static final long serialVersionUID = -5023520095036169842L;

 public String add() {
  return SUCCESS;
 }

 public String delete() {
  return SUCCESS;
 }

 public String edit() {
  return SUCCESS;
 }

 public String find() {
  return SUCCESS;
 }
}

 ------------------------------------Hongten---------------------------------

TeacherAction.java

代码;

package com.b510.hongten;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 
 * @author XHW
 * 
 * @date 2011-7-30
 * 
 */
public class TeacherAction extends ActionSupport {
 private static final long serialVersionUID = -5023520095036169843L;

 public String add() {
  return SUCCESS;
 }

 public String delete() {
  return SUCCESS;
 }

 public String edit() {
  return SUCCESS;
 }

 public String find() {
  return SUCCESS;
 }
}

 ------------------------------------Hongten---------------------------------

 index.jsp

代码;

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>
    My JSP 'index.jsp' starting page<br>
    <a href="<%=basePath %>Student_add">增加学生</a>
    <a href="<%=basePath %>Student_delete">删除学生</a><br>
    <a href="<%=basePath %>Student_edit">编辑学生</a>
    <a href="<%=basePath %>Student_find">查看学生</a><br>
    <a href="<%=basePath %>Teacher_add">增加老师</a>
    <a href="<%=basePath %>Teacher_delete">删除老师</a><br>
    <a href="<%=basePath %>Teacher_edit">编辑老师</a>
    <a href="<%=basePath %>Teacher_find">查看老师</a><br>
  </body>
</html>

 ------------------------------------Hongten---------------------------------

Student_add.jsp

代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Student_add.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>
   My JSP 'Student_add.jsp' starting page <br>
   <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

 ------------------------------------Hongten---------------------------------

Student_delete.jsp

代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Student_delete.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>
    My JSP 'Student_delete.jsp' starting page <br>
   <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

 ------------------------------------Hongten---------------------------------

Student_edit.jsp

代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Student_edit.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>
    My JSP 'Student_edit.jsp' starting page <br>
    <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

 ------------------------------------Hongten---------------------------------

Student_find.jsp

代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Student_find.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>
    My JSP 'Student_find.jsp' starting page <br>
  <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

 ------------------------------------Hongten---------------------------------

Teacher_add.jsp

代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Teacher_add.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>
   My JSP 'Teacher_add.jsp' starting page<br>
   <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

 

 ------------------------------------Hongten---------------------------------

Teacher_delete.jsp

代码;

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'Teacher_delete.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>
   My JSP 'Teacher_delete.jsp' starting page <br>
  <a href="<%=basePath %>index.jsp">home</a>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html制作相册影集,用影集制作系统 轻松制作绚丽电子相册

“结庐在人境&#xff0c;而无车马喧。问君何能尔&#xff0c;心远地自偏。采菊东篱下&#xff0c;悠然见南山。山气日夕佳&#xff0c;飞鸟相与还。此中有真意&#xff0c;欲辨已忘言……”陶渊明先生以冲淡清远之笔&#xff0c;为我们描述了田园生活和虚里风光&#xff0c;利…

python3 gui协程_Python3进阶-协程

协程简介又称为微进程&#xff0c;纤程。非抢占式使用资源。优点优点1&#xff1a;协程极高的执行效率。因为子程序切换不是纤程切换&#xff0c;而是由程序自身控制&#xff0c;因此&#xff0c;没有纤程切换的开销&#xff0c;和多线程对比&#xff0c;纤程数量越多&#xff…

计算机主机ip地址题,计算机网络IP地址练习习题

IP地址习题1、192.168.1.1代表的是()地址。A、A类地址B、B类地址C、C类地址D、D类地址2、224.0.0.5代表的是()地址。A、主机地址B、网络地址C、组播地址D、广播地址3、192.168.1.255代表的是()地址。A、主机地址B、网络地址C、组播地址D、广播地址4、对于一个没有经过子网划分的…

实验一 线性表的顺序存储与实现_数据结构篇之单链表的创建以及实现

上次咱们已经一起分享了线性表的顺序存储的基本创建以及一些运算方法的实现&#xff0c;那么这次咱们主要来研究线性表的链式存储&#xff0c;俗称单链表&#xff0c;咱们知道顺序表在建立的时候要注意需要建立一块连续的空间&#xff0c;所以需要使用数组在内存中开辟空间&…

多线程基础(二)pthread的了解

IOS中多线程的实现方案 了解NSOperation&#xff08;代码&#xff09; 所有的方法都是pthread开头的 然后再搞一条线程 pthread_create方法有返回值&#xff0c;作用&#xff1a;判断线程创建是否成功&#xff1f; 常用的方法&#xff1a; 退出的方法: 关于pthread代码几乎不用…

计算机专业技能高考试题素材,计算机技能高考模拟试题

计算机技能高考模拟试题(2016年湖北)《组装与维护模块》本套试卷选取3套高考模拟卷&#xff0c;自制而成&#xff0c;请同学们45分钟完成全部答题(2018-06-12)(标准&#xff1a;总分80分&#xff0c;48分及格&#xff0c;64分良好&#xff0c;64以上优秀)Ⅲ、计算机组装与维修(…

python爬虫requests源码链家_Python爬虫之---爬链家

一个简单的实例&#xff0c;可以采用。做的demo。 #!/usr/bin/python # -*- coding: utf-8 -*- # Time : 2020/6/4 15:55 # Author : Xuegod Teacher For # File : 01_get_price_test.py # Software: PyCharm第一步&#xff1a;下载所有的html 第二步&#xff1a;利用xpath爬取…

iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能&#xff1a; 1.使用StoryBoard实现 2.纯代码实现 前言&#xff1a;手机屏幕始终有限&#xff0c;如何在有限的展示空间提供便捷的导航入口呢&#xff1f;Facebook…

计算机网络基础大学教材,《计算机网络技术及应用——大学计算机基础教育规划教材》低价购书_教材教辅考试_孔网...

本书在介绍数据通信概念的基础上&#xff0c;分局域网、广域网和因特网三个模块详细讲述了计算机网络的基础知识&#xff0c;还介绍了网络安全和网络管理方面的实用技术。本书的内容是兼顾基础&#xff0c;突出应用。本书取材新颖&#xff0c;概念清晰&#xff0c;可作为理工科…

绘图的尺寸_Auto CAD机械绘图尺寸标注教程1(尺寸标注简介)

1、尺寸是工程图中不可缺少的一项内容&#xff0c;工程图中的图形只用来标识工程图形的形状&#xff0c;而工程形体的大小尺寸是靠尺寸来说明的&#xff0c;所以工程图图中尺寸必须标注得正确、完整、清晰、合理。工程图中尺寸标注包括&#xff1a;尺寸界线、尺寸线、尺寸起止符…

java并发核心知识体系精讲_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析

版权说明&#xff1a;本文内容根据 github 开源项目整理所得项目地址&#xff1a;https://github.com/Snailclimb/JavaGuide​github.com一、基础什么是线程和进程?何为进程?进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统…

计算机专业 毕业论文 百度云,计算机专业毕业论文.pdf

XXXX 学院本科生毕业论文基于 VB 的人力资源管理信息系统的设计与实现院别 、专业 计算机科学与信息技术学院计算机科学与技术专业研 究 方 向 网络工程学 生 姓 名学 号指导教师姓名指导教师职称 讲 师20XX年 X 月 X 日大庆师范学院本科毕业论文 (设计 )摘 要为了提高人力资源…

python在linux中输出带颜色的文字的方法

在开发项目过程中&#xff0c;为了方便调试代码&#xff0c;经常会向stdout中输出一些日志&#xff0c;默认的这些日志就直接显示在了终端中。而一般的应用服务器&#xff0c;第三方库&#xff0c;甚至服务器的一些通告也会在终端中显示&#xff0c;这样就搅乱了我们想要的信息…

运用python的方式_对Python使用mfcc的两种方式详解

1、Librosa import librosa filepath "/Users/birenjianmo/Desktop/learn/librosa/mp3/in.wav" y,sr librosa.load(filepath) mfcc librosa.feature.mfcc( y,sr,n_mfcc13 ) 返回结构为(13,None)的np.Array&#xff0c;None表示任意数量 2、python_speech_features…

nginx加载图片慢_优化vue项目的首屏加载速度

最近使用vue-cli3构建了一个小型的博客系统&#xff0c;完工之后&#xff0c;build打包出来发现一个chunk-vendors包就有1.1m&#xff0c;部署上去之后&#xff0c;访问的时候&#xff0c;首屏加载非常慢。居然需要21s&#xff0c;体验极差。这是打包的结果截图根据这种情况&am…

Python.with.context-manager

Context Manager 1. Context Manager简介 "Context managers are a way of allocating and releasing some sort of resource exactly where you need it." Ref[4] 例如: 1 with file("/tmp/foo", "w") as foo: 2 print >> foo, &qu…

micropython移植教程_【教程】智能编程T-Watch手表初试micropython之电子秤教程

原标题&#xff1a;【教程】智能编程T-Watch手表初试micropython之电子秤教程 【项目的故事】 在极客玩具中&#xff0c;我一直喜欢穿戴类和小车类。前后做过两只运动心率表&#xff0c;并且参与过麦步手表的测试。TTGO最新出品了一块叫做T-Watch的手表&#xff0c;实际上&…

音乐和计算机跨界融合,音乐类综艺跨界融合有了新思路

图集8月9日《人民日报》刊文&#xff0c;对原创综艺节目《幻乐之城》匠心做原创的新思路、新经验、新趋势进行了表扬&#xff0c;文章指出&#xff1a;“音乐电影”的节目模式在呈现出音乐与电影双重质感的同时&#xff0c;也为国内音乐类综艺节目的跨界融合发展提供了新的思路…

mysql 下载到其他盘中_MYSQL 如果把数据文件保存到其他磁盘里

今天在CSDN上有人问起分开存储数据文件的问题。现在写下来。为了突破磁盘搜索的瓶颈。我们要把MYSQL的数据和索引保存到其他不同的磁盘中。目前还只是支持MyISAM引擎。在MYSQL中&#xff0c;官这个叫象征性链接。1、在WINDOWS下的象征性链接。数据库目录&#xff1a;E:/LAMP/my…

python定义了函数却显示未定义_python

我正在编写一个脚本&#xff0c;在我的脚本中&#xff0c;我具有以下功能&#xff1a; def insert_image(cursor, object_id, sku): product_obj core.Object.get(object_id) string_sku str(sku) folder string_sku[0] string_sku[1] string_sku[2] found_url False # K…