一个简单的struts2 程序

来源:互联网 发布:淘宝商城排名规则 编辑:程序博客网 时间:2024/06/05 10:12

一、什么是Struts2

struts2是以WebWork为核心,采用拦截器机制来处理用户请求,从而使业务逻辑控制与Servlet API完全脱离开

struts2是一个可重用的MVC2设计框架。基于Action的struts2框架把servlet和jsp组件整合在一起,把用户的页面请求和处理分拆成处理逻辑和表现逻辑。这就是业界流行的所谓的MVC模式,叫做Model2



在MVC模式中,servlet是控制器,集中处理所有的客户端页面请求。它们把所请求的URL与被称为Action的工作单元映射到一起。

Action的工作就是访问HTTP会话、HTTP请求、和表单参数等,然后调用业务逻辑,即把响应映射到以pojo形式的模型上执行相应的处理

Action返回的结果会通过配置文件映射到jsp页面,jsp会渲染给客户


二、框架构成


struts2框架主要由3部分组成:

1)核心控制器FilterDispatcher:该控制器实际上是一个Filter,并充当Web应用的门户,负责拦截所有的用户请求。让用户的请求到达时,Filter会将所有扩展名为action(*.action)的请求交由struts2框架处理,框架会根据所请求的action名决定调用那个业务逻辑组件

2)业务逻辑器

3)用户业务逻辑组件


struts2中还有一些拦截器,它们负责将httpservletRequest请求参数解析出来并传入Action中,然后回调Action的execute方法处理用户请求。

架构如下:


Struts2的所有action都定义在配置文件struts2.xml中,每一个Action都有一个name属性和一个class属性,前者决定该ACTION的请求名,后者决定该action的具体实现类


三、实例

在Eclipse中新建Dynamic Web Project

1、  导入Struts2开发所需的jar包(最少6个包)

到WebContent/WEB-INF/lib下

目录结构:



2、  配置web.xml文件



3、 在src下新建struts.xml

  <?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC"-//ApacheSoftware Foundation//DTD Struts Configuration 2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

    <packagename="login"namespace="/login"extends="struts-default">

        <actionname="loginAction"class="com.sun.test">

            <resultname="input">login.jsp</result>

            <resultname="success">welcome.jsp</result>

            <resultname="failture">failture.jsp</result>

        </action>

    </package>

</struts>

 

注意:

<package>标签用于声明Action所属的包,struts2是通过包来组织Action的,一个package中可以包含多个<action>

<package>中的namespace属性设置了jsp页面所在的路径,namespace=”/login”表示jsp页面在login文件夹中

 

 

<action>标签配置一个Action类,它的名字是”loginAction” 相应的类为com.sun.test(com/sun文件夹下的test.java)

 

    <action>的子标签<result>用于声明页面跳转控制。默认的跳转方式为dispatcher,即服务器内部跳转

        如果execute(默认)的返回值为”success”就跳转到welcome.jsp,若返回值为”failture”则跳转到failure.jsp


4、新建action类

其中包括属性的声明、getter、setter方法、execute方法(当然还可以定义其他方法)

 

 

package com.sun;importjava.util.Date; importcom.opensymphony.xwork2.ActionSupport;public classtest extends ActionSupport{private String username, password;private String msg;public String execute() throws Exception {        if (username.equals("admin")&& password.equals("123456")) {               msg = "登录成功,欢迎您:" + username ;               return "success";        } else {               msg = "登录失败,用户" + username + "不存在或口令有误!";               return "failure";        }} 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 getMsg() {        return msg;}public void setMsg(String msg) {        this.msg = msg;}}



5、  新建jsp页面


注:

<s:form>用于组织表单数据,其中的action=”loginAction” 指交给处理的目标,也就是name=”loginAction”Action,重要的是这里也要配置namespace,否则会出现找不到Action的异常

 

在浏览器中输入:http://localhost:8080/strutstest/login/login.jsp

就可以访问了


0 0
原创粉丝点击