zoukankan      html  css  js  c++  java
  • Struts2的框架

     struts2框架,大多数框架都在使用。由于工作需要,开始做Java项目。先学个struts2。


      一、创建web项目,导入使用struts2所必须的jar包。

      我使用的是MyEclipse 7.5。建立web项目,给项目添加外部引用包(project-properties-Java
    Build Path-Add External Jars...)。添加的包有:commons-fileupload-1.2.1.jar,commons-io-
    1.3.2.jar,commons-logging-api-1.1.jar,freemarker-2.3.16.jar,javassist-3.7.ga.jar,ognl-
    3.0.jar,struts2-core-2.2.1.1.jar,xwork-core-2.2.1.1.jar。注意:由于struts2版本的差异性,
    上面提到的包不一定满足所有版本的需求。配置完struts2后,请部署运行一下。根据运行时的错误提示
    来添加jar包解决问题。比如,配置struts-2.2.1.1时需要commons-io-1.3.2.jar包和javassist-
    3.7.ga.jar包,但是2.1版本就不需要这两个包。

      二、编写struts.xml文件

      在MyEclipse项目中的src根目录下建立一个struts.xml文件。(可以打开下载的struts2安装包里的
    apps目录下的任意一个jar包,在里面的WEB_INFR/src目录下,寻找struts.xml文件,将该文件复制进项
    目的src根目录下,将里面的内容清空(只留下<struts>标签和头部标签即可))

      三、在web.xml中加入struts2 MVC框架启动配置

      和struts.xml文件的生成类似,在struts2安装包里找到web.xml文件,将里面的<filter>和
    <filter-mapping>标签及其内容拷贝进项目中的web.config文件即可。

      四、struts2实例--简单的登录例子

    4.1 编写login.jsp页面。代码如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>

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

    <title>Login</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

    </head>

    <body>

    <s:form action="/login" method="post">
    <s:label value="系统登陆"></s:label>
    <s:textfield name="username" label="账号" />
    <s:password name="password" label="密码" />
    <s:submit value="登录" />
    </s:form>

    </body>
    </html>

    4.2 编写LoginAction类。代码如下:

    package com.gsww.kingreturns.struts2.excise;

    import com.opensymphony.xwork2.ActionSupport;

    public class LoginAction extends ActionSupport {//该类继承了ActionSupport类。这样就可以直接
    使用SUCCESS, LOGIN等变量和重写execute等方法

    private static final long serialVersionUID = 1L;
    private String username;
    private String password;

    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;
    }

    @Override
    public String execute() throws Exception {
    if("haha".equals(username) && "hehe".equals(password))//如果登录的用户名=haha并且密码
    =hehe,就返回SUCCESS;否则,返回LOGIN
    return SUCCESS;
    return LOGIN;
    }
    }

    4.3 配置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>

    <package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.gsww.kingreturns.struts2.excise.LoginAction"
    method="execute">
    <result name="success">/welcome.jsp</result>
    <result name="login">/login.jsp</result>
    </action>
    </package>

    </struts>

    主要属性说明:package-name:用于区别不同的package;必须是唯一的、可用的变量名;用于其它
    package来继承;

    package--namespace:用于减少重复代码(和struts1比较);是调用action时输
    入路径的组成部分;

    package--extends:用于继承其它package以使用里面的过滤器等东东;

    action--name:用于在一个package里区别不同的action;必须是唯一的、可用的
    变量名;是调用action时输入路径的组成部分;

    action--class:action所在的路径(包名+类名);

           action--method:action所调用的方法名;

    还有其它的属性,因为项目里没有用到,就没有解释。如有需要,请查阅相关文档。

    4.4 配置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">

    <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>

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>

    需要注意的东东:这个文件里,配置的过滤器的类是:
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。和原来配置的类不一样
    。原来配置的类是:org.apache.struts2.dispatcher.FileDispatcher。这是因为,从struts-2.1.3以
    后,org.apache.struts2.dispatcher.FileDispatcher值被标注为过时。虽然仍然起作用,但是不建议
    使用。

    4.5 根据struts.xml里配置的内容,还需要一个welcome.jsp页面。编写welcome.jsp页面。代码如
    下:

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

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

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

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

    </head>

    <body>
    欢迎${username }!
    </body>
    </html>

    经过上述步骤,登录实例已经编写完毕。启动tomcat,在网页地址栏里输入:
    http://localhost:8080/项目的名称/login.jsp,打开登录页面。如下所示:

    输入用户名:haha,密码:hehe,点击登录,就来到了welcome.jsp页面。如下所示:

    如果输入的用户名和密码不是haha和hehe,那么,就来到了login.jsp页面。

    五、项目总结

    简单的登录实例就完成了。这个例子里,还有一个需要注意的地方。LoginAction类继承了
    ActionSupport类,并且在execute方法的返回里,使用了SUCCESS和LOGIN变量。它们俩对应的值分别为
    :success、login(小写)。所以,在struts.xml里配置的result的name属性里,必须写为小写。要不
    然,会报"Could not find action or result"的错误。

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/xingxiao520/p/4560780.html
Copyright © 2011-2022 走看看