Struts2实例

来源:互联网 发布:北风大数据培训线下 编辑:程序博客网 时间:2024/05/19 02:39

一、        经典的MVC模式

 

二、        Struts1.xMVC的实现

 

三、        Struts1.x的主要组件和作用

组件

作用

ActionServlet

中央控制器

Action

分控制器,调用JavaBean实现业务逻辑,Action可以分为ActionDispatchAction等不同类型

ActionForm

封装参数,实现服务器验证,文件上传等

Forward

转发到目的地,可以是JSP,也可以是另一个Action

Struts-config.xml

配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件

Struts标签库

JSTL类似,和Struts-config.xmlActionFormAction等对象可以紧密集成

 

四、        Struts1.x 开发实例-登录程序

见案例。

 

 

五、        Struts2WebWork)的MVC

 Struts2MVC架构

 

六、        Struts2的主要组件

组件

作用

FilterDispatcher

起中央控制器作用的过滤器

Action

处于Model层的Action,调用JavaBean实现业务逻辑

struts.xml

核心配置文件,配置有ActionResult

result

forward类似,转发的目的地,支持多种视图技术。

 

七、        Struts2的实例-登录

MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:/Struts2Login”。

Struts2.0.11版本中找到warstruts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。

src目录下建立一个类,包名mypack,类名UserAction,其代码如下:

package mypack;

 

import com.opensymphony.xwork2.ActionSupport;

 

public class UserAction extends ActionSupport {

    private String username;

    private String userpass;

   

    public String getUsername() {

        return username;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public String getUserpass() {

        return userpass;

    }

    public void setUserpass(String userpass) {

        this.userpass = userpass;

    }

    @Override

    public String execute() throws Exception {

        if ("Mike".equals(username) && "123".equals(userpass)

                || "张三".equals(username) && "abc".equals(userpass))

            return "success";

        else

            return "error";

    }

}

       src目录下建立Struts2的配置文件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>

     <!-- 定义包管理配置的action 继承struts-default.xml中的配置 -->

    <package name="actions" extends="struts-default">

     <!-- 定义Action(login.action)  -->

        <action name="login" class="mypack.UserAction">

              <!-- 定义转发路径对应的字符串名  -->

            <result name="success">/Success.jsp</result>

            <result name="error">/Error.jsp</result>

        </action>

    </package>

</struts>

       修改web.xml,在其中加入一个过滤器,过滤/*路径。

<!-- 过滤器类      -->

<filter>

<filter-name>struts2</filter-name>

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

</filter>

<!-- 过滤所有的url请求 -->

<filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

</filter-mapping>

       webroot目录下编写3jsp页面,index.jspSuccess.jspError.jsp,注意这里把page指令中的pageEncoding设置为“utf-8”,就没有中文问题了。

l  index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme() + "://"

            + request.getServerName() + ":" + request.getServerPort()

            + path + "/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base href="<%=basePath%>">

        <title>My JSP 'index.jsp' starting page</title>

    </head>

 

    <body>

         <!-- 提交到action  -->

        <form action="login.action" method="post">

            用户名:

               <!-- 参数名和action中的属性名一样  -->

            <input type=text name=username>

            <br>

            &nbsp;&nbsp;:

            <input type=password name=userpass>

            <br>

            <input type=submit name=subm value="提交">

            <input type=reset name=reset value="取消">

        </form>

    </body>

</html>

l  Success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme() + "://"

            + request.getServerName() + ":" + request.getServerPort()

            + path + "/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base href="<%=basePath%>">

        <title>My JSP 'Success.jsp' starting page</title>

    </head>

    <body>

        <h1>

            欢迎

            <%=request.getParameter("username")%>

            ,登录

        </h1>

    </body>

</html>

l  Error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme() + "://"

            + request.getServerName() + ":" + request.getServerPort()

            + path + "/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base href="<%=basePath%>">

        <title>My JSP 'Error.jsp' starting page</title>

    </head>

    <body>

        <h1>

            用户名或密码错误!

        </h1>

    </body>

</html>

       把程序部署在tomcat5.5以上的版本中运行。

原创粉丝点击