Struts2基本配置和使用

1.首先在web.xml里面配置一个Struts2的核心过滤器 这样Struts2才能开始工作

<!-- 配置struts2的核心过滤器  -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2.在工程的src目录下建一个struts.xml 为Struts2的核心配置文件

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

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

<struts>

<!--配置struts2包  (struts2中所有的action都放置在包内) -->

 <package name="名字任意 不重复就行" extends="struts-default" namespace="/">  

<!--配置action    * 号代表通配符 {1}代表第一个通配符的值  当值和action类中的方法名相同 就会执行对应的方法   -->

<action name=" 一般取action类的简短类名_* "  class="action类的完整类名"    method="{1}">

<!-- 比如登录页面 我要请求UserAction中的登录方法  请求地址可以这样写  User_Login.action  这样struts2会找到对应的action类并执行对应方法  -->

<!--配置结果    当action类中的方法返回值和name的值相同的时候 会执行这个<result> 跳转到对应页面  默认是服务器转发跳转 可以通过设置 type的值 常用取值如下

默认是dispatcher 转发到某个页面 

redirect 重定向到某个页面

chain 转发到某个action

redirectAction 重定向到某个 action

  -->

<result name="和action类中方法的返回值一致" >页面路径     , 如果是跳转到别的action 就是请求别的action的请求路径</result>

</action>

</package>

</struts>

3.action类的写法

定义一个类继承ActionSupport类 然后就可以写方法,方法的返回值必须是String 如果这个方法处理完成不跳转页面 可以 return NONE;

这是ActionSupport类的一个常量 代表不跳转页面

struts2可以帮我们接收从页面传递过来的参数 并且封装成对应的对象,前提是参数名必须和对象的属性名一致 一般采用模型驱动的方法封装

action类继承一个ModelDriven<要封装对象的类>接口  重写getModel()方法  然后定义一个属性 就是对象的实例 然后在getModel()方法中返回 这个实例 

struts2就会自动帮我们将页面传递的值 封装到这个对象 在这个类中就可以使用这个对象 进行操作 栗子 如下:

public class UserAction extends ActionSupport implements ModelDriven<User> {
   private User user=new User();

@Override public User getModel() { // TODO Auto-generated method stub return user; }

struts2中如果想使用request和respon或者session之类的对象 可以通过 ServletActionContext类的静态方法getRequest()方法获得request对象

通过getResponse()方法 可以得到respon对象  可以进行一些存取值的操作

这是一个简单的登录方法  返回值可以在Struts2的核心配置文件中的action下配置result标签 name值和这个方法的返回值相同就可以跳转页面了

如果这个方法不需要跳转页面 直接 return NONE;  这是ActionSupport类的常量 代表不跳转页面

public String login(){
    User u = userService.userLogin(user);
        if(u==null){
ServletActionContext.getRequest().getSession().setAttribute("messg", "登录失败,用户名或密码错误!");
        return "loginFail";
        }else{
            ServletActionContext.getRequest().getSession().setAttribute("user", u);
            return "loginSuccess";
        }
    
    }

这些就是struts2的基本使用 当然还有ongl表达式,值栈存取值和配置拦截器 这些功能 我就没写了,因为struts2这个框架过时了 而且还被爆出有安全漏洞

现在已经有更加完美的解决方案 就是SpringMVC

原文地址:https://www.cnblogs.com/java888/p/10701236.html