Struts 2 配置

第一步,导入jar文件

sturts2-core-xxx.jar   				//核心类库
xwork-core-xxx.jar				//构建基础
ognl-xxx.jar						//表达式语言类库
freemarker-xxx.jar					//标签模板使用类库
javassist-xxx.GA.jar				//对字节码进行处理
commons-fileupload-xxx.jar		//文件上传时需要使用
commons-io-xxx.jar				//java IO扩展
commons-lang-xxx.jar				//包含了一些数据

//自动导入上面8个jar文件
<dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.5.14.1</version>
</dependency>

第二步:创建处理请求的Action类,可以实现Action接口,实现execute()方法,所有用于处理请求的方法都必须返回一个字符串类型的逻辑结果,Action类的属性来接收用户的输入,需要set和get方法。

import com.opensymphony.xwork2.Action;

public class HelloWorldAction implements Action {
    private String name;
    private  String pwd;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String execute() {
        //获得ServletContext对象
        ServletContext servletContext= ServletActionContext.getServletContext();
        //获得HttpServletRequest对象
        HttpServletRequest request= ServletActionContext.getRequest();
        //获得HttpSession对象
        HttpSession session=request.getSession();
        if(this.getName()==null || this.getName().length()==0){

        }
        return LOGIN;
    }
}

Action接口常用字符串的逻辑含义:

常量逻辑含义
SUCCESSsuccess表示处理正常,并返回成功后的结果
NONEnone表示处理正常,但不返回给用户信息
ERRORerror表示处理结果失败
INPUTinput表示需要更多用户输入才能顺利执行
LOGINlogin表示需要用户正确登陆后才能顺利执行

第三步:配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!--引入核心过滤器-->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>
</web-app>

第四步:创建struts.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!--编码格式-->
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    
    <!--启用动态方法调用,如:url是login!xxx.action,访问Login类的xxx方法。因为可能带来安全隐患,默认是false-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    
    <!--可以拆分成多个struts配置文件,默认只加载struts.xml文件,所以用include元素把所有文件整合起来-->
    <include file="struts-user.xml"/>
    
    <!--创建一个包,继承自Struts2的struts-default包-->
    <package name="index1"  extends="struts-default" >
        <!--接收处理用户的/login1.action请求,并根据返回结果完成跳转。 method:类的方法名;-->
        <action name="login1" class="cn.kgc.action.LoginAction" method="success">
            <!--结果为success时,跳转至login.jsp页面-->
            <result name="success">login.jsp</result>
            <!--结果为error时,跳转至index.jsp页面-->
            <result name="error">index.jsp</result>
        </action>
	
		<action name="login" class="cn.kgc.action.Login" method="Login">
            <!--redirect:重定向;redirectAction:重定向到action;dispatcher:转发(默认值)-->
            <result name="login" type="redirect">WEB-INF/jsp/login.jsp</result>
            <!--redirectAction:重定向到上面的login1请求-->
            <result name="input" type="redirectAction">login1</result>
        </action>

		 <!--使用通配符,*User:配置所有以User结尾的URL,method="{1}:值就是name属性值中第一个“*”的值。-->
   		 <!--如:请求为loginUser.action,将由UserAction类的login()方法执行,返回到/jsp/login.jsp页面-->
   		 <action name="*User" class="cn.kgc.action.HelloWorldAction" method="{1}">
            <result name="success">WEB-INF/jsp/{1}.jsp</result>
        </action>
        
		<!--默认的Action,如果请求的Action不存在,就执行默认的Action -->
		<default-action-ref name="defaultAction"/>
		<action name="defaultAction">
			<result>error.jsp</result>
		</action>
	
		<!--全局结果,在此包中共享。在Action中没有找到结果时,才在全局结果中查找 -->
		<global-results>
			<result name="error">/page/error.jsp</result>
			<!--type:请求类型,分为dispatcher,redirect,redirectAction三种-->
			<!--dispatcher类型:默认类型,采用转发的形式请求指定的视图资源,请求的数据不会丢失-->
			<!--redirect类型:采用重定向方式请求指定的视图资源,通过HttpServletResponse对象的sendRedirect()方法重新生成一个请求,原请求数据会丢失-->
			<!-- redirectAction类型:采用重定身的方式请求一个新的Action,请求数据会丢失-->
			<result name="login" type="redirect">/page/login.jsp</result>
		</global-results>
    </package>        
</struts>

第五步:编译部署并启动服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts2 中,可以使用拦截器来防止 XSS 攻击。以下是一些步骤: 1. 创建一个类,继承 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter。 ```java public class XSSFilter extends StrutsPrepareAndExecuteFilter { @Override protected void postInit(FilterConfig filterConfig) throws ServletException { super.postInit(filterConfig); // 添加 XSS 拦截器 addFilter(new FilterHolder(new XSSInterceptor()), "/*", null); } } ``` 这个类的作用是在 Struts2 启动时添加一个 XSS 拦截器。 2. 创建一个 XSS 拦截器。 ```java public class XSSInterceptor implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 对请求参数进行 XSS 过滤 HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; filterChain.doFilter(new XSSRequestWrapper(request), response); } @Override public void destroy() { } } ``` 这个拦截器的作用是对请求参数进行 XSS 过滤。 3. 创建一个 XSSRequestWrapper 类,继承 HttpServletRequestWrapper。 ```java public class XSSRequestWrapper extends HttpServletRequestWrapper { public XSSRequestWrapper(HttpServletRequest request) { super(request); } @Override public String getParameter(String name) { String value = super.getParameter(name); if (value != null) { value = Jsoup.clean(value, Whitelist.basic()); } return value; } } ``` 这个类的作用是重写 getParameter 方法,在获取请求参数时进行 XSS 过滤。 4. 在 web.xml 中添加过滤器配置。 ```xml <filter> <filter-name>xssFilter</filter-name> <filter-class>com.example.XSSFilter</filter-class> </filter> <filter-mapping> <filter-name>xssFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这个配置的作用是将 XSSFilter 拦截器应用于所有的请求。 以上是一个简单的 Struts2 XSS 拦截器的配置。但是需要注意的是,这个拦截器只能对请求参数进行 XSS 过滤,对于响应内容的过滤需要使用其他的方案来解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值