zoukankan      html  css  js  c++  java
  • Struts2 入门

    传统的JavaWeb使用Servlet写后台,Struts主要是代替Servlet写后台的,用于处理客户端请求。

    Struts框架抽象出后台处理的通用步骤,封装为一个框架,简化了后台编程。

    与Servlet相比,Struts具有先进的架构、编程思想。

    Struts的功能

    • 自动封装参数
    • 参数校验
    • 结果处理(转发、重定向)
    • 国际化
    • 显示等待页面
    • 防止表单重复提交

    Struts1、2的区别

    • Struts1、2技术上关系并不大
    • Struts1基于Servlet,而Servlet是线程不安全的,所以Struts1线程不安全
    • Struts2基于Filter,前身是WebWork

    IDEA下使用Struts2示例

    1、创建项目

    把struts2核心的8个jar包添加进来,不要IDEA下直接Download Structs的核心jar包,因为直接Download的jar包只有7个,少了一个,部署时会出错。

    2、打开项目结构,修复问题

    3、打开web.xml

    随着Struts的版本更替,Struts核心过滤器类的位置也在变化,需要手动修复。

    输入SPAEF,StrutsPrepareAndExecuteFilter这个类就出来了,把原来的删掉。

    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

    4、编写前端页面,用Action处理请求,在struts.xml中配置Struts(主要是action)。

    比如我们在index.jsp中写一个表单:

    1 <form>
    2     请选择登录角色:<br />
    3     <input type="radio" name="role" value="student">学生
    4     <input type="radio" name="role" value="teacher">教师<br />
    5     <button type="submit" >登录</button>
    6   </form>

    src下新建包action,包下新建类LoginAction:

     1 public class LoginAction extends ActionSupport {
     2     private String role;
     3 
     4     public void setRole(String role) {
     5         this.role = role;
     6     }
     7 
     8     public String getRole() {
     9         return role;
    10     }
    11 
    12     @Override
    13     public String execute() throws Exception {
    14         if (role.equals("teacher"))
    15             return "teacher";
    16         else if (role.equals("student"))
    17             return "student";
    18         else
    19             return "error";
    20     }
    21 }

    需要继承ActionSupport类,重写execute()方法。当请求提交到这个action时,会自动调用execute()来处理。

    将要处理的字段写成成员变量,并设置对应的setter、getter方法,成员变量名需要和请求传过来的参数名相同。上面的表单会传递一个参数role,这个action接受到请求时,会调用setter方法把请求参数赋给相应的成员变量。

    execute()需要返回一个String类型的值,可以自己写,也可以使用Struts预定义的常量,比如SUCCESS即"success"。

    在struts.xml中配置action:

    1 <struts>
    2     <package name="action" namespace="/" extends="struts-default">
    3         <action name="loginAction" class="action.LoginAction">
    4             <result name="teacher">/teacher.jsp</result>
    5             <result name="student">/student.jsp</result>
    6             <result name="error">/error.jsp</result>
    7         </action>
    8     </package>
    9 </struts>

    <package>配置一个包,name指定包名,namespace、extends都是固定的值。此处的包是概念上的包,比如把订单模块的action放在一起,并不是指src下实际的包。

    <action>配置一个action,name指定action名称,class指定action所在的类。

    <result>设置视图。action相当于控制器servlet,处理请求,并调用相应的视图来显示结果。

    设置表单的action属性:

    action="loginAction"

    可以直接写action的name,也可以带后缀.action, action="loginAction.action" 。

    如果首页不是index,还需要在web.xml中配置首页

    <welcome-file-list>
            <welcome-file></welcome-file>
        </welcome-file-list>
  • 相关阅读:
    毕业3年在北京买房,他是怎么赚钱攒钱的?
    Windows Server 2008 如何在IIS中添加MIME类型
    IIS下无法访问.ini后缀文件
    新的一年,我们如何才能收获满满,不留太多遗憾呢?
    你百分之九十九的问题都是因为懒
    为什么你容许陌生人成功,却无法忍受身边人发达
    堆排序
    计数排序
    直接插入排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11210838.html
Copyright © 2011-2022 走看看