首页 > 代码库 > Struts2第一个入门案例

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类中成员变量的属性名。

      

 

 

   

Struts2第一个入门案例