• 常见问题及注意事项: 

  1.下载struts2时,要看清所下载的版本,不同版本web.xml配置路径不同!

   2. 导入jar包时,导入的包要完全准确,缺少或过多的会导致缺失或冲突!

  3. RegisterAction-validation.xml 客户端校验无效,暂未解决。

 

1. 下载struts2软件包
  
下载地址:http://struts.apache.org/download.cgi#struts2513
2. 在web工程中导入struts包中的jar文件
  
2.1 将下载好的struts包下的一些核心类库复制到/WEB-INF/lib目录下,并构建路径。



 

3.  web.xml配置

  3.1 针对不同struts版本,web.xml配置方式有所不同!

    check your struts2-core-x.x.jar version.

      -->if it is struts2-core-2.5.jar then change your filter class tag value in web.xml to

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

      -->if it is struts2-core-2.1.3.jar then change your filter class tag value in web.xml to

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

    FilterDispatcher is deprecated since Struts 2.1.3. If you are working with older versions then user above solution.

      -->if it is struts2-core-2.3.X.jar then change your filter class tag value in web.xml to

      <filter-class>
       org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      </filter-class>   3.2 配置web.xml(本人struts版本为struts2.3)     <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
 
      <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>
    </web-app> 4. struts配置实例struts.xml
  <?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>
    <package name="struts2" extends="struts-default">
        <action name="login" class="com.gxh.action.LoginAction">
            <result name="success">/login_success.jsp</result>
            <result name="failure">/login_failure.jsp</result>
            <result name="input">/login.jsp</result>
        </action>
        <action name="input" class="com.gxh.action.InputAction">
            <result name="success">/demo/output.jsp</result>
            <result name="input">/demo/input.jsp</result>
        </action>
        <action name="register" class="com.gxh.action.RegisterAction">
            <result name="success">/demo2/result.jsp</result>
            <result name="input">/demo2/register2.jsp</result>
        </action>     
    </package>
  </struts>  5. 创建控制类Action
   
//LoginCheck.java类,校验用户名和密码
    public class LoginCheck{
      public boolean isLogin(String username,String password){
        if("tom".equals(username) && "123".equals(password)){
          return true;
        }else{
          return false;
        }
      }
    }

  方式一:编写普通的实体类,如loginAction.java ,重写execute()方法
    public class LoginAction{
      private String username;
      private String password;       public void setUsername(String username){
        this.username = username;
      }
      public String getUsername(){
        return username;
      }
      public void setPassword(String password){
        this.password= password;
      }
      public String getPassword(){
        return password;
      }

      
      public String execute()throws Exception{
        LoginCheck lc = new LoginCheck();    //LoginCheck.java类另写
        if(lc.isLogin(getUsername(),getPassword())){
          ActionContext.getContext().getSession().put("login","true");
          return "success";
        }else{
          return "failure";
        }
      }
    }
    //配置struts.xml
     <?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>
      <package name="struts2" extends="struts-default">
        <action name="login" class="com.gxh.action.LoginAction">
            <result name="success">/login_success.jsp</result>
            <result name="failure">/login_failure.jsp</result>
        </action>             
      </package>
    </struts> 

   
  方式二:编写Java类,实现Action接口,如LoginAction2.java
    public class LoginAction2 implements Action{
      public String username;
      public String password;       public void setUsername(String username){
        this.username = username;
      }
      public String getUsername(){
        return username;
      }
      public void setPassword(String password){
        this.password = password;
      }
      public String getPassword(){
        return password;
      }       public String execute()throws Exception{
        LoginCheck lc = new LoginCheck();    //LoginCheck.java类另写
        if(lc.isLogin(getUsername(),getPassword())){
          ActionContext.getContext().getSession().put("login","true");
          return SUCCESS;
        }else{
          return ERROR;
        }
      }
   
    }
    //配置struts.xml
     <?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>
      <package name="struts2" extends="struts-default">
        <action name="login" class="com.gxh.action.LoginAction2">
            <result name="success">/login_success.jsp</result>
            <result name="error">/login_failure.jsp</result>
        </action>             
      </package>
    </struts>    方式三:编写Java类,继承ActionSupport类,如LoginAction3.java
    public class LoginAction3 extends ActionSupport{
      public String username;
      public String password;       public void setUsername(String username){
        this.username = username;
      }
      public String getUsername(){
        return username;
      }
      public void setPassword(String password){
        this.password = password;
      }
      public String getPassword(){
        return password;
      }
      
      pubic void validate(){
        if(getUsername() == null || "".equals(getUsername().trim()) ){
          this.addFieldError("username","username can not empty.");  //username为在username标签上提示错误,
        }else if(!getUsername().matches("正则式")){    //
          this.addFieldError("username","username is invalidate.");
        }
        if(getPassword() == null || "".equals(getPassword().trim())){
          this.addFieldError("password","password can not empty.");  //password为在password标签上提示错误,
        }else if(!getPassword().matches("正则式")){
          this.addFieldError("password","password is invalidate.");
        }
      }
      public String execute()throws Exception{
        LoginCheck lc = new LoginCheck();    //LoginCheck.java类另写
        if(lc.isLogin(getUsername(),getPassword())){
          ActionContext.getContext().getSession().put("login","true");
          return SUCCESS;
        }else{
          return ERROR;
        }
      }
   
    }

    //配置struts.xml
     <?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>
      <package name="struts2" extends="struts-default">
        <action name="login" class="com.gxh.action.LoginAction3">
            <result name="success">/login_success.jsp</result>
            <result name="error">/login_failure.jsp</result>
           <result name="input">/login.jsp</result>  //当验证不通过时,跳转到登录页面
        </action>             
      </package>
    </struts> 

  • struts学习总结

 1. struts应用

  • 表单设计,使用struts标签替换传统的HTML标签;
  • 使用Action-validation.xml实现客户端校验;
  • 通过重写validate()方法实现服务器端校验。

  

【struts2】学习笔记的更多相关文章

  1. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  2. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  3. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  4. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  5. struts2学习笔记 ⑤

    拦截器初探 昨天临睡觉之前看了看拦截器,也在昨天的学习笔记里面胡诌诌了几句,今天就来好好的会会拦截器这个东西.实际上拦截器是一种模块实现的机制<起码我是这么体会的>(至于说书里面说体现了A ...

  6. [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...

  7. struts2学习笔记之二:基本环境搭建

    学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6   首先建立一个web项目,并 ...

  8. 【Struts2学习笔记-4】包含其他配置文件

    包含其他配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLI ...

  9. 【Struts2学习笔记-3】常量配置

    Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...

  10. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

随机推荐

  1. (DP)51NOD 1007正整数分组

    将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的.   输入 第1行:一个数N,N为正整数的数量. 第 ...

  2. AdventureWorks2012.mdf的使用

    AdventureWorks2012.mdf的使用,在数据库管理器界面中,右击数据库,然后附加,然后选择好AdventureWorks2012.mdf,然后删掉log,然后确定即可.

  3. flask跨域问题

    在Flask开发RESTful后端时,前端请求会遇到跨域的问题.下面是解决方法: 使用 flask-cors库可以很容易的解决   1 pip install flask-cors 两种方法,一个是全 ...

  4. Hdu 5452 Minimum Cut (2015 ACM/ICPC Asia Regional Shenyang Online) dfs + LCA

    题目链接: Hdu 5452 Minimum Cut 题目描述: 有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数? 解题思路: 因 ...

  5. 题解报告:hdu 2196 Computer(树形dp)

    Problem Description A school bought the first computer some time ago(so this computer's id is 1). Du ...

  6. JAVA常用设计模式(静态化调用和实例化调用的区别,编辑可见 )

    用newInstance()与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类,且newInstance()只能调用无参构造函数. 最大的区别在于内存.静态方法 ...

  7. 516 Longest Palindromic Subsequence 最长回文子序列

    给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 详见:https://leetcode.com/problems/longest-palindromic-subseque ...

  8. Python实现决策树C4.5算法

    为什么要改进成C4.5算法 原理 C4.5算法是在ID3算法上的一种改进,它与ID3算法最大的区别就是特征选择上有所不同,一个是基于信息增益比,一个是基于信息增益. 之所以这样做是因为信息增益倾向于选 ...

  9. Android开发-浅谈架构(二)

    写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...

  10. Node.Js的Module System 以及一些常用 Module

    Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node ...