下面是关于“Java的Struts框架中Action的编写与拦截器的使用方法”的攻略。
Struts框架
Struts是一种流行的MVC(Model-View-Controller)Java Web框架。它允许将应用程序的内容(模型)、用户界面(视图)和应用程序流程(控制器)分开,这样不同的开发人员可以专注于不同的方面。
Action的编写
Action是Struts框架中一个重要的组件,用于处理HTTP请求。一个Action是一个Java类,通常继承自Struts中的Action类。对于每个HTTP请求,Struts都会调用合适的Action来处理请求,然后将结果返回给浏览器。
下面是一个简单的Action的代码示例:
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String name;
public String execute() throws Exception {
setMessage("Hello " + getName());
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在这个代码示例中,我们定义了一个继承自ActionSupport
的类HelloWorldAction
,并定义了一个execute()
方法来处理HTTP请求。这个方法将会在用户请求时被自动调用,处理完请求后,返回一个字符串作为结果。
Interceptor的使用方法
Interceptor是Struts框架中拦截Action请求的组件。拦截器可用于修改请求和响应对象、验证权限、检查是否处于登录状态等等。在Struts中,Action请求过程中可以自动应用一个或多个拦截器。
下面是一个简单的Struts配置文件,包含了一个logging
拦截器的配置:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="logging" class="com.example.LoggingInterceptor"/>
</interceptors>
<action name="hello" class="com.example.HelloWorldAction">
<interceptor-ref name="logging"/>
<result name="success">/helloPage.jsp</result>
</action>
</package>
</struts>
在这个代码示例中,我们定义了一个logging
拦截器,并在一个Action中使用了这个拦截器。在logging
拦截器类中,我们可以将请求、响应等信息输出到日志文件中。
示例
下面我们来看两个示例,一个是编写Action,一个是使用拦截器。
示例一:编写Action
我们来写一个简单的Struts程序来演示一个用于显示当前日期和时间的Action。下面是代码示例:
package com.example;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class TimeAction extends ActionSupport {
private String currentTime;
public String execute() throws Exception {
setCurrentTime(new Date().toString());
return SUCCESS;
}
public String getCurrentTime() {
return currentTime;
}
public void setCurrentTime(String currentTime) {
this.currentTime = currentTime;
}
}
在上面的示例中,我们定义了一个TimeAction
类来处理请求,并在execute()
方法中设置了当前时间。我们还定义了一个getCurrentTime()
方法,用于在JSP页面中获取当前时间。
示例二:使用拦截器
我们继续使用上面的示例,为其添加一个拦截器,防止未经授权的访问。下面是代码示例:
package com.example;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthenticationInterceptor extends AbstractInterceptor {
private String password;
public void setPassword(String password) {
this.password = password;
}
public String intercept(ActionInvocation invocation) throws Exception {
String password = invocation.getInvocationContext().getParameters().get("password")[0];
if (password == null || !password.equals(this.password)) {
return "unauthorized";
}
return invocation.invoke();
}
}
在上面的示例中,我们定义了一个拦截器AuthenticationInterceptor
,用于检查是否提供了正确的密码。在拦截器中,我们通过 ActionInvocation 对象获取请求上下文,然后检查提供的密码。如果密码无效,拦截器返回unauthorized
字符串,阻止Action处理请求。
下面是在Struts配置文件中使用这个拦截器的示例:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="auth" class="com.example.AuthenticationInterceptor">
<param name="password">secret</param>
</interceptor>
</interceptors>
<action name="time" class="com.example.TimeAction">
<interceptor-ref name="auth"/>
<result name="success">/time.jsp</result>
<result name="unauthorized">/unauthorized.jsp</result>
</action>
</package>
</struts>
在上面的示例中,我们定义了一个auth
拦截器,并在一个Action中使用了这个拦截器。在Action处理请求之前,AuthenticationInterceptor
拦截器会被自动应用,并检查提供的密码是否正确。如果密码错误,拦截器将返回unauthorized
字符串,阻止该Action处理请求。
以上就是完整的Struts框架中Action的编写与拦截器的使用方法攻略和示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的Struts框架中Action的编写与拦截器的使用方法 - Python技术站