导航:首页 > 净水问答 > 如何实现一个sturts的过滤器

如何实现一个sturts的过滤器

发布时间:2021-10-31 21:35:07

⑴ 使用struts2.1需要编写过滤器吗

项目中使用来Struts2同样需要源在web.xml配置过滤器,用来截取请求,转到Struts2的Action进行处理。
注意:如果在2.1.3以前的Struts2版本,过滤器使用org.apache.struts2.dispatcher.FilterDispatcher。否则使用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。
三个初始化参数配置:
config参数:指定要加载的配置文件。逗号分割。
actionPackages参数:指定Action类所在的包空间。逗号分割。
configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割。

⑵ struts2 自带过滤器

实际上,struts2中叫做拦截器它起到类似过滤器的作用但不是过滤器实际上,是一个核心控制器servlet

⑶ 如何配置struts2的过滤器

你说的是拦截器吧
第一步:创建一个类实现Intercepter接口并实现其中方法
第二步:注册拦截器(在struts.xml)如:
<package name="cust"
namespace="/cust"
extends="struts-default">
<interceptors>
<!-- 注册拦截器 -->
<interceptor name="first"
class="com.interceptor.FirstInterceptor"/>
<interceptor name="second"
class="com.interceptor.SecondInterceptor"/>
<!-- 注册拦截器栈,将所有拦截器打包在一起 -->
<interceptor-stack name="mystack">
<interceptor-ref name="first"/>
<interceptor-ref name="second"/>
<!-- 引用自定义的拦截器时,会使struts2自带的拦截器失效
因此,要将默认的拦截器加入到自定义的拦截器栈中 -->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!--第三步: 引用拦截器 ,

<action name="toUpdateCustomer"
class="com.action.ToUpdateCustomerAction"
method="execute">
<!-- 引用拦截器 ,
<interceptor-ref name="first"/>
<interceptor-ref name="first"/>-->
<!-- 引用拦截器栈,会一次将所有的拦截器引用 -->
<interceptor-ref name="mystack"/>
<result name="success">
/WEB-INF/cust/update_customer.jsp
</result>
</action>
</package>
供参考

⑷ struts2怎样实现一个替换处理请求的action的拦截器

这个不用拦截器啊,你直接在struts.xml中将abc.action这个访问的请求重新配给OtherAction就行了啊

⑸ ssh2框架中, 为什么我们要在web.xml中配置struts的过滤器要详细一点,回答的好,加分

struts2的过滤器的目的是过滤符合要求的请求,如我们配置以action结尾的请求,全部使用专struts2的请求

你有没有疑惑属过,为什么struts2的标签了、领域模型、数据绑定等这些内容如何实现的?为什么我们以前写普通web程序的时候,需要在servlet里面接受参数,使用了struts2就不用手动的接受了?

这些都是struts2的过滤器的功能,过滤器接受到这些请求,并自动的根据我们在struts-config.xml里面的配置信息将这些参数进行处理,过滤器对常用的操作进行了封装,减少了我们的工作量

⑹ java 怎么重写struts2 的strutsexecutefilter过滤器

在struts2中的拦截器的定义是先定义一个类实现Interceptor接口,重写方法。下面是实现登录验证的拦截器。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="mystruts" extends="struts-default">
<interceptors>
<interceptor name="LoginInterceptors"class="com.kaishengit.interceptors.LoginInterceptors">
<param name="excludeName">execute,login,index</param>
<param name="sessionName">currUser</param>
</interceptor>
<interceptor-stack name="myInterceptors">
<interceptor-ref name="LoginInterceptors"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myInterceptors"></default-interceptor-ref>
<!-- 适用于所有的action -->
<global-results>
<result name="login" type="redirect">index.jsp</result>
</global-results>

<!-- AppAction -->
<action name="index" class="com..web.AppAction">
<result>/WEB-INF/views/index.jsp</result>

</action>
<action name="login" class="com.web.AppAction" method="login">

<result type="redirectAction">main</result>
<result name="input" type="">/WEB-INF/views/index.jsp</result>
</action>
</package>
</struts>
public class LoginInterceptors extends AbstractInterceptor{

private static final long serialVersionUID = 1L;
private String sessionName;
private String excludeName;
private List<String> list;
public List<String> strlsit(String str){
String[] s = str.split(",");
List<String> list = new ArrayList<String>();
for(String ss : s){
list.add(ss.trim());
}
return list;
}
@Override
public void init() {
list = strlsit(excludeName);
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String actionName = invocation.getProxy().getActionName();
if(list.contains(actionName)){
//请求的是合法
return invocation.invoke();
}else {
//查看session
Map<String,Object> session = invocation.getInvocationContext().getSession();
User user = (User) session.get(sessionName);
if(user==null){
return "login";
}else {
return invocation.invoke();
}
}
}
public String getSessionName() {
return sessionName;
}
public void setSessionName(String sessionName) {
this.sessionName = sessionName;
}
public String getExcludeName() {
return excludeName;
}
public void setExcludeName(String excludeName) {
this.excludeName = excludeName;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
当调用除了execute,login,index三个方法时,先验证是否登录,如果没有登录,调回登陆页。
Action实现验证参数值,先让action继承ActionSupport,
因为ActionSupport实现了Validateable接口,再
重写。validateable方法。Validateable方法是空方法,当login方法调用前验证是否空值,定义方法validateLogin(),
以后和业务有关的验证方法定义都是validatexxx(),xxx是执行的业务方法。
public class AppAction extends ActionSupport implements SessionAware,ServletRequestAware {
private static final long serialVersionUID = 1L;
private Map<String,Object> session;
private HttpServletRequest request;
private User user;
private UserService userService = new UserService();

/**
* 去登录页面
* @return
*/
public String execute() {
return "success";
}

/**
* 登录
* @return
*/
public String login() {
if(user==null){
return "login";
}else {

User loginUser = userService.login(user);
if(loginUser == null) {
return "login";
} else {
//Map<String,Object> session = ActionContext.getContext().getSession();
session.put("currUser", loginUser);

// = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
//HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);

return "success";
}

}
}

public void setSession(Map<String, Object> session) {
this.session = session;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

//get set

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public void validateLogin() {
if(user==null){
return;
}
System.out.println("================validateLogin==========");
if("".equals(user.getUsername())||user.getUsername()==null){
addFieldError("userName", "名称必填");
}
if("".equals(user.getPassword())||user.getPassword()==null){
addFieldError("password", "密码不能空");
}
}
public void validate() {
System.out.println("==========================");
}
}
在页面上写<s:fielderror fieldName="userName" theme="simple"/>

<s:fielderror fieldName="password" theme="simple"/>
得到验证信息

⑺ struts2中怎样实现过滤jsp页面的过滤器

如下所示:

package test;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class LoginFilter implements Filter
{

public void destroy()
{

}

public void doFilter(ServletRequest req, ServletResponse rsp,
FilterChain chain) throws IOException, ServletException
{
chain.doFilter(req, rsp);
}

public void init(FilterConfig arg0) throws ServletException
{

}

}

在web.xml里面配置

<filter>
<filter-name>logFilter</filter-name>
<filter-class>test.LoginFilter</filter-class>

</filter>
<filter-mapping>
<filter-name>logFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

⑻ struts2 如何写过滤器

答案:那年的冬天特别寒冷,

⑼ struts2过滤器

WEB.xml中配置struts2的代码片段
<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>
'/*'是拦截所有的url,你这里可以配置你的过滤规则的啊(例如/*.jsp、/*_aaa.jsp等),但是版一般不需要修改的,改权了以后,扩展起来会给你带来一些的不必要的麻烦的

⑽ Struts2入口过滤器配置

本人试验了一下配置成*.action index.jsp是可行的,不过一般情况下是配置成/*的 然后结合版struts.properties文件里面的struts.action.extension(定义扩权展名,例如.do,.action等等,多个扩展名中间用逗号隔开)值使用,楼主你最好检查下你的服务器启动日志 看看项目是否正常启动。

阅读全文

与如何实现一个sturts的过滤器相关的资料

热点内容
陕西原装外置污水提升泵要多少钱 浏览:419
聚聚乙烯树脂粉袋 浏览:739
饮水机漏水属于什么原因 浏览:824
污水厂硝化脱模怎么处理 浏览:924
vue2内置过滤器 浏览:386
植物芳香油蒸馏设备 浏览:418
聚醚枫超滤膜进水pH 浏览:907
外置过滤桶推荐 浏览:676
75g反渗透 浏览:347
纯水机桶怎么装 浏览:524
车子怎么换空气滤芯 浏览:959
净化器排污怎么接 浏览:66
浴室镜子除垢 浏览:840
树脂胶抽料泵 浏览:383
海德能ro膜是哪国的 浏览:256
工业纯水处理设备怎么选 浏览:253
自己在家没酒曲怎么酿蒸馏酒 浏览:948
马桶上面的黄水垢尿垢怎么清理 浏览:405
大话2回血鬼用极品灵宝 浏览:584
甲醛释放量蒸馏萃取法 浏览:559