第一:概念:无
第二:struts2通配符的使用(!是在jsp页面的时候用的)
第一步:struts.xml中的action标签不写method属性了
<?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>
<package name="my" namespace="/" extends="struts-default">
<action name="login" class="com.action.TestAction" >
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
第二步: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>
<form action="login!UserLogin.action">
姓名: <input type="text" name="test.name"><br>
年龄: <input type="text" name="test.age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
第三步:action层:必须有名字为UserLogin的方法
package com.action;
import com.entity.Test;
public class TestAction {
private Test test;
public Test getTest() {
return test;
}
public void setTest(Test test) {
this.test = test;
}
public String UserLogin(){
if(test.getName().equals("admin")&&test.getAge()==8){
return "success";
}
return "error";
}
}
第三:使用占位符和通配符
1.struts.xml的配置(其中*表示通配符,{1}表示占位符)
注意:*所表示的内容就是{1}所要表示的内容
<?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>
<package name="my" namespace="/" extends="struts-default">
<action name="login_*" class="com.action.TestAction" method="{1}">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
2.jsp页面(在表单提交的时候,占位符的位置使用UserLogin字符串替代了,体现了通配符)
<%@ 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>
<form action="login_UserLogin.action">
姓名: <input type="text" name="test.name"><br>
年龄: <input type="text" name="test.age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
3.action类(由于jsp页面在表单提交的时候,使用了login_UserLogin.action,因此在action类中必定会出现UserLogin方法,因为struts.xml中的占位符{1}就是给struts.xml中的通配符*用的)
package com.action;
import com.entity.Test;
public class TestAction {
private Test test;
public Test getTest() {
return test;
}
public void setTest(Test test) {
this.test = test;
}
public String UserLogin(){
if(test.getName().equals("admin")&&test.getAge()==8){
return "success";
}
return "error";
}
}
第四:课外知识
最为简单的action配置可以说是一个action对应一个类。形如下面:
<package name="schoolweibo" extends="struts-default">
<action name="register" class="registerAction">
<result name="success">/page/user_Login.jsp</result>
</action>
</package>
这样虽然清晰明了,但是如果有太多的Action,那就要写很多配置文件,基于此,struts2提供了模糊匹配;也就是动态定位。
<package name="schoolweibo" extends="struts-default">
<action name="user_*" class="indexAction" method="{1}">
<result name="success">/page/user_{1}.jsp</result>
</action>
</package>
其中【*】号代表占位符,而【{1}】表示【*】所对于的action中的方法,比如jsp页面中这样写:
<a href="user_register.action">立即注册</a>
那么对于的indexAction类中的就是register方法。注意:这样写的前提是必须把execute方法去掉,即不要重写。这还不是最少配置的。
下面来看一个最少配置的。
<package name="schoolweibo" extends="struts-default">
<action name="*_*" class="{1}Action" method="{2}">
<result name="success">/page/{1}_{2}.jsp</result>
</action>
</package>
这里有两个占位符,第一个代表对于的action类名,第二个代表方法名。如果还有更多占位符,则可以以此类推。
相关推荐
在Struts2的配置文件(通常为struts.xml或struts-default.xml)中,通配符是一种特殊字符,如`*`,它可以用作占位符,匹配一组相似的Action或URL。通过使用通配符,我们可以创建一组通用的配置规则,这些规则可以...
通配符配置允许在Action路径中使用星号(*)作为占位符,匹配多个Action。例如,`*`可以匹配任意字符,`{1}`、`{2}`等可以匹配请求路径中的参数,提高配置的灵活性。 九、Action的属性接收参数: 1. 在Action添加成员...
等占位符可以捕获URL中的部分,并将其作为参数传递给Action。这使得Action可以根据URL中的不同部分执行相应的业务逻辑。 压缩包中的`Struts2_wang_Wildcard`可能包含了以下组件: 1. **Action类**:实现通配符...
这里,`*`作为通配符匹配任何请求,`{1}`是一个占位符,代表第一个通配符匹配到的字符串。所以,当用户点击“登录”按钮,`method`将被解析为“Login”,执行`action.Action`类的`login()`方法,并跳转到`userLogin....
`class`属性指定为`com.bjsxt.struts2.action.StudentAction`,`method`属性通过占位符"{1}"动态地获取名称中的剩余部分,作为方法名。对应的`result`路径也会根据动作名称动态生成,如`/Studentadd_success.jsp`。 ...
)作为占位符,匹配多个URL模式。例如,`*`可以匹配任意数量的字符,而`?`只匹配单个字符。这样的配置可以减少Action 类的数量,提高代码复用,同时降低维护成本。 总之,在这个项目中,开发者尝试用Struts 来实现...
通过`{1}`等占位符可以指定通配符的顺序。 7. Action接收参数的方式多样,包括直接在URL中传参、使用域模型(Domain Model)、DTO(Data Transfer Object)或Model Driven模式。Struts2的标签`s:property value=...
1. **占位符赋值**:JDBC需要手动为SQL的占位符赋值,Mybatis通过动态SQL解决了这一问题。 2. **结果集封装**:Mybatis自动处理结果集,无需手动封装,提高了开发效率。 3. **缓存优化**:JDBC没有内置缓存,而...
`{1}`是占位符,表示从URL中提取的实际参数,这里表示匹配以"student"开头的所有动作,并将剩余的部分作为方法名。 传递参数的方法有两种常见方式: 1. 直接在Action中声明参数:在Action类中定义字段,Struts2的...
例如,如果查询字段是`name`,模糊查询的HQL可能是`from Entity where name like :keyword`,这里的`:keyword`是占位符,实际使用时会被用户输入的值替换,通配符 `%` 可以用来匹配任意字符。 总的来说,SSH框架下...
- **映射动态配置**:使用通配符(*)和占位符({})来定义请求映射规则,使得Struts2能够更加灵活地处理各种URL请求。 **4. 传值的获取表达式** - **EL表达式**:用于存取数据,支持`.`和`[]`两种运算符。当属性名...
在模板中,使用特殊的占位符(如`<@page>`或`<decorator:content/>`)来指示Sitemesh插入页面内容的位置。 一旦配置完成,Sitemesh就会自动处理你的请求。当你访问一个页面时,Sitemesh会捕获响应,应用装饰器模板...
在实际应用中,应该使用具体的实现类替换掉`xxxx`占位符。`FilterChainProxy`是Acegi Security框架中的核心组件之一,用于构建过滤器链来管理安全控制逻辑。 #### 七、总结 通过对`web.xml`配置文件中各个关键配置...