⑴ org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是struts 2提供的过滤器类吗
你说的这个类是struts2的拦截器,过滤器可以使用org.springframework.web.filter.CharacterEncodingFilter
⑵ 搭建struts2环境,在web.xml中加入过滤器的代码后访问任何页面都是404错误。请大家帮帮忙。
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等),但是一般不需要答修改的,改了以后,扩展起来会给你带来一些的不必要的麻烦的
望采纳。
⑶ 如何利用apache的过滤器拦截http的post请求,并提取出来postdata
利用ap_get_brigade函数从下一个过滤器中读取数据,在利用存储段转换函数,将bucket转换为字符串,就可以读取出来了,但是具体步骤及函数你要自己去好好参考使用哪些合适
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
⑷ org.apache.shiro.web.filter.authc.formauthenticationfilter 这个什么jar包
一般为所抄有的请求启用或禁用一个过滤器是通过设置其enabled 属性为true 或false。默认的设置是true, 因为 如果他们被配置在一个过滤器链中则本质上是需要执行的。禁用过滤器的例子如下:
[main]
# configure Shiro's default 'ssl' filter to be disabled while testing:
ssl.enabled = false
[urls]
/some/path = ssl, authc
/another/path = ssl, roles[admin]
⑸ 服务器中apache(阿帕奇)是个什么软件,干嘛用的
APACHE就是一个网络服务器,这个服务器侦听一个TCP端口,一般是80,对端口收到的命令进行解释,然后提交一些结果。APACHE解释的最主要的命令就是GET和POST,一般对应客户端在浏览器输入地址、浏览器里面点击链接和提交一个表单。APACHE对GET和POST命令进行解释的时候,如果GET和POST的对象是一个HTML、CSS、JS、RAR、TXT等一般文件,就直接把文件的内容发回客户端;如果对象是一个PHP文件,APACHE就启用PHP.EXE程序(UNIX上名称不一样,而且安装为模块的细节又有不同,这里只是举例),把文件、调用的参数传递给PHP.EXE,然后把PHP.EXE执行的结果反馈给客户端。
PHP可以调用各种库执行各类功能,最典型的就是查询数据库。PHP.EXE解释执行PHP文本文件里面的语句,执行前一般不翻译,就象批处理一样。
APACHE可以配置多个类似PHP这样的过滤器,凡是XXX类的文件,都提交给XXX.EXE执行,把执行完毕的内容发送给浏览器,其它文件直接发送。APACHE就这么简单的、机械的执行。
⑹ 我写了一个过滤器 然后跳转到action里面从action里面去值 传入页面 出现了异常
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
request.getRequestDispatcher("UserInfoAction.do").forward(arg0, arg1);
arg2.doFilter(arg0, arg1);
}
request.getRequestDispatcher("UserInfoAction.do").forward(arg0, arg1);
里面的UserInfoAction.do好像不对吧,你应该写struts里面的配置路径path="userInfo"
所以写为 request.getRequestDispatcher("userInfo.do").forward(arg0, arg1);
|||||||
试试吧,不行的话再说
⑺ 为什么在练习struts2小项目时明明在web.xml中配置了过滤器org.apache.struts2.dispatcher.ng.filte 说找不
你看你是不是把struts所需的JAR文件构建到你的项目里面了吗?
⑻ 禁止 apache 访问 tomcat webapp某一个工程 怎么配置
尝试写一个过滤器吧,将有可能的爬虫过滤掉,直接不让访问
⑼ 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"/>
得到验证信息