Struts2简诉

时间:2023-02-16 15:45:00

  Struts2框架是基于MVC模式的开源,MVC模式是一种开发方式,主要作用是对组件之间进行隔离,M代表业务逻辑层,V代表视图层,C代表控制层。有利于代码的后期维;Struts2框架的源码主要来于WebWork框架,是在WebWork框架基础上再与Struts1的优点进行整合而设计出新的MVC分层框架。

Struts官方地址:http://struts.apache.org

下面做一个简单的登陆功能以演示Struts2,先看一下项目的结构

Struts2简诉

1.配置web.xml文件

 <?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">
     <!-- Struts通过使用Filter拦截器来拦截以jsp、js、或者action为后缀的请求 -->
      <filter>
         <filter-name>Struts 2</filter-name>
         <filter-class>
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
         </filter-class>
     </filter>
     <filter-mapping>
         <filter-name>Struts 2</filter-name>
         <url-pattern>*.jsp</url-pattern>
     </filter-mapping>
     <filter-mapping>
         <filter-name>Struts 2</filter-name>
         <url-pattern>*.js</url-pattern>
     </filter-mapping>
     <filter-mapping>
         <filter-name>Struts 2</filter-name>
         <url-pattern>*.action</url-pattern>
     </filter-mapping>

     <!--
         以上简化的写法
     <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>-->
   <display-name></display-name>
   <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
 </web-app>

2.创建控制层Login.java文件

package controller;

import model.UserInfoService;
/**
 * 使用Servlet作为控制层时,自定义的Servlet类需要继承HttpServlet类,
 * 而Struts2不需要继承任何类就可以实现Controller控制层的功能。
 * 方法execute()是固定的写法,Struts2对这种写法是有声明格式规定的,访问权限必须是public,
 * 改方法返回类型是String,方法名是execute。这是一个约定,它是Status2默认会调用的方法,
 * 返回值String类型代表了一个逻辑名称,通过这个名称找到对应的JSP文件。
 * username与password与JSP文件中的<input/>标签的name属性相对应
 * @author LJX
 *
 */
public class Login {
    private String username;
    private String password;
    //get,set方法
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public String execute(){
        UserInfoService usRef = new UserInfoService();
        if(usRef.login(username, password)){
            return "toOKJSP";
        }else{
            return "toNOJSP";
        }
    }
}

3.创建业务逻辑层UserInfoService.java文件

package model;

public class UserInfoService {
    //逻辑判断
    public boolean login(String username,String password){
        if(username.equals("a") && password.equals("a")){
            return true;
        }else{
            return false;
        }
    }
}

4.创建index.jsp、ok.jsp、no.jsp视图文件

index.jsp
<body>
    <form action="login.action" method="post">
        username:
        <input type="text" name="username" /><br>
        password:
        <input type="text" name="password" /><br>
        <input type="submit" value="登录" />
    </form>
  </body>

ok.jsp
<body>
    This is OK page. <br>
 </body>

no.jsp
<body>
    This is NO page. <br>
 </body>

5.创建核心配置文件struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- 是struts框架运行在开发模式,对异常的报错信息显示的比较完整 -->
    <constant name="struts.devMode" value="true"/>
    <!-- 定义一个package包,与java中的包不同的是struts中的包可以继承
         extends="struts-default"的作用是自定义的包struts2login
         继承自系统自带的包struts-default,这样可以将系统自带功能得到复用,
         比如上传下载
     -->
    <package name="Struts2login" extends="struts-default">
        <!-- 将一个Login.java这个普通的JavaBean可以接受HTTP请求,name属性
              是访问路径,需要加.action为后缀,class属性为Login.java类的路径
         -->
        <action name="login" class="controller.Login">
            <result name="toOKJSP">/ok.jsp</result>
            <result name="toNOJSP">/no.jsp</result>
        </action>
    </package>
</struts>

代码敲完了,相信能有一个初步的对Struts2的认识,将项目发布到Tomact运行看效果,代码给了很详细的解释!

                                    学海无涯,苦渡而已!!

Struts2简诉的更多相关文章

  1. Android -- Apk安装简诉

    安装涉及到如下几个目录 system/app  ​ 系统自带的应用程序,无法删除 data/app   用户程序安装的目录,有删除权限. 安装时把apk文件复制到此目录 ​ data/data  存放 ...

  2. Mybaits简诉

    先组织一下语言!Mybatis是一个框架,一个数据持久化的框架,作用就是SQL语句的映射!减少了JDBC繁琐的数据操作与类型转换!简而言之,就是方便.轻巧!什么是持久化,持久,恩,JDBC就是一个数据 ...

  3. Jquery与DOM对象

    在第一次学习jquery中,常常会不能分辨DOM对象和Jquery对象,下面我们就简诉一下它们之间的关系和区别 1.DOM对象(Document Object Model) 文档对象模型,每一份DOM ...

  4. magento安装wordpress

    说起来事实上很easy,如今简诉一下安装过程 1.到magento connect界面安装magento扩展,地址:http://www.magentocommerce.com/magento-con ...

  5. Struts2 源码分析——Result类实例

    本章简言 上一章笔者讲到关于DefaultActionInvocation类执行action的相关知识.我们清楚的知道在执行action类实例之后会相关处理返回的结果.而这章笔者将对处理结果相关的内容 ...

  6. Struts2 源码分析——DefaultActionInvocation类的执行action

    本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...

  7. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  8. Struts2 源码分析——Action代理类的工作

    章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...

  9. Struts2 源码分析——配置管理之PackageProvider接口

    本章简言 上一章讲到关于ContainerProvider的知识.让我们知道struts2是如何注册相关的数据.也知道如何加载相关的配置信息.本章笔者将讲到如何加载配置文件里面的package元素节点 ...

随机推荐

  1. virtual关键字的本质是什么?

    MSDN上对virtual方法的解释:试着翻译如下 当一个方法声明包含virtual修饰符,这个方法就是虚方法.如果没有virtual修饰符,那么就不是虚方法. 非虚方法的实现是不变的:不管该方法是被 ...

  2. 用python做些有意思的事——分析QQ聊天记录——私人订制

    之前,写了这篇文章,用python提取全部群成员的发言时间,并简单做了下分析.先补充一下,针对特定单个群成员(这里以  小小白   为例)消息记录的获取. 代码比较简单,主要是正则表达式的书写.(附: ...

  3. Spring使用Cache、整合Ehcache

    http://haohaoxuexi.iteye.com/blog/2123030 Spring使用Cache 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring ...

  4. Solr4&period;8&period;0源码分析&lpar;5&rpar;之查询流程分析总述

    Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...

  5. 可持久化Trie树

    代码 ; struct PerTrie { ][ChSize]; ]; void init() { memset(next[],,])); inf[]=; id=; } int GetId(char ...

  6. phoenegap3&period;5 采坑

    上周5晚上在家看Node.js视频的时候,老大来一条短信让研究下 phoengap打包一个web网站. 遂 陷入了phonegap的深渊中. phoengap很早开始使用 cli模式安装开发环境 ,借 ...

  7. poj3974(manacher)

    传送门:Palindrome 题意:给定一个字符串,求最长回文子串. 分析:manach裸题,核心理解mx>i?p[i]=min(p[2*id-i],mx-i):1. #pragma comme ...

  8. chrome解决http自动跳转https问题

    1.地址栏输入: chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏,输入想处理的域名,点击delete. 3.搞 ...

  9. XMLHTTPRequestObject获取服务器数据

    http://www.educity.cn/develop/526316.html 在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数 ...

  10. jdbc 链接数据库步骤 7步

    JDBC连接数据库   •创建一个以JDBC连接数据库的程序,包含7个步骤:   1.加载JDBC驱动程序:       在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), ...