zoukankan      html  css  js  c++  java
  • Struts2第一个入门案例

      一.如何获取Struts2,以及Struts2资源包的目录结构的了解

       Struts的官方地址为http://struts.apache.org 在他的主页当中,我们可以通过左侧的Apache Struts菜单下的Release链接,可以查看Struts各个阶段的词资源,也可以通过Archive Site链接访问来获取版本。

       那我们这里以struts-2.3.15.1-all为例。

     1.App目录下包含了官方提供的Struts2应用示例,为开发者提供了很好的参照。

     2.doc目录下是官方提供的Struts2文档。

     3.lib目录下是Struts的发行包及其依赖包。

     4.src目录是Struts2项目该版本对应的源码。

     其余部分是Struts2及其依赖包的使用许可协议和声明。

       二.入门案例

    1.引入jar包:

       新建一个Java Web项目,将Struts2框架所需的jar包添加到项目的lib文件夹上,Struts2项目所依赖的基础jar包如下:

      

      2.创建一个登录案例的界面

       01.login.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>
    <!-- 导入Struts2 核心标签库-->
    <%@taglib uri="/struts-tags" prefix="s"%>
    <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.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>
        <form action="Login3.action" method="post">
            用户名:<input type="text" name="user.name" /> 密码:<input type="text"
                name="user.pwd" /> <input type="submit" value="登录">
        </form>
    </body>
    </html>

       02.登录失败页面:final.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 'final.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>
        <h1>登录失败</h1>
    </body>
    </html>
    View Code

        03.登录成功页面scuess.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>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'scuess.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>
        <h1>登录成功! 欢迎你,<s:property value="user.name"/> </h1>
    </body>
    </html>
    View Code

       3.创建cn.entity.User类:

    package cn.entity;
    
    //用户类
    public class User {
        private String name;
        private String pwd;
    
        public User() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public User(String name, String pwd) {
            super();
            this.name = name;
            this.pwd = pwd;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
    }
    View Code

         4.创建cn.action.LoginAction类:

    package cn.acction;
    
    import cn.entity.User;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    
    public class LojinAction implements Action {
        // 注意User对应必须要有get和set封装不然Strut2框架不会帮你自动装备User对象
        private User user;
    
        @Override
        public String execute() throws Exception {
            // 如果密码为123,用户名为123表示登录成功
            if (user.getName().equals("123") && user.getPwd().equals("123")) {
                // 表示登录成功。
                return SUCCESS;
    
            } else {
                // 表示登录失败
                return ERROR;
            }
    
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
    }
    View Code

        5.配置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">
      <display-name></display-name>    
      <!-- 添加struct2的核心过滤器 -->
      <filter>
       <filter-name>struct</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
                  
      </filter>
      <filter-mapping>
      <filter-name>struct</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>
      
      
      <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    View Code

        6.在Src目录下创建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>
        <!-- 配置文件中只要添加以下配置,那么以后修改配置文件不用重启tomcat -->
        <constant name="struts.devMode" value="true"/>
        <package name="default" namespace="/" extends="struts-default">
          <!-- 登录案例 -->
           <action name="Login" class="cn.acction.LojinAction">
           <result name="scuess">
              Login/scuess.jsp
           </result>
           <result name="error">
            Login/final.jsp
           </result>
           </action>
        </package>
    </struts>
    View Code

        执行流程图:

        

       注意点:

          1.一定要在web.xml中配置struts2核心过滤器。

          2.from表单的action提交的名字要和struts.xml中的action节点的名字保存一致。

          3.struts.xml的名字不要写错。

          4.表单的input的name属性值不要写错,要写成执行Action类中成员变量的属性名。

          

       

  • 相关阅读:
    无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限
    sql server 2008收缩数据库日志
    c#基本语法
    写点东西
    转载 程序人生成长发展中的一些感悟
    C#基本问题
    对象入门
    21k8s部署discuz
    Mysql基础管理
    将枚举作为参数,迭代枚举。Passing Enum type as a parameter
  • 原文地址:https://www.cnblogs.com/hyjj/p/5825513.html
Copyright © 2011-2022 走看看