zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python界面常用GUI包
    ATSC/DVB/ISDB三大标准比较
    【MPEG】DVB / ATSC / ISDB区别
    Python判断字符串是否为字母或者数字
    MApp_ZUI_CTL_MarqueeTextWinProc字串滚动
    PWM原理及其在电源中的应用
    按键板的原理与实现 扩展GPIO
    按键板的原理与实现----ADC
    使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
    SQL Server备份还原数据库中的小把戏
  • 原文地址:https://www.cnblogs.com/java888/p/10701236.html
Copyright © 2011-2022 走看看