热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

struts2最简单的例子

struts2是由webworkstruts1得来的。很多特性与webwork相似,但与struts1有很大的区别.我以前没搞过什么webwork(ht
struts2是由webwork+struts1得来的。很多特性与webwork相似,但与struts1有很大的区别.
我以前没搞过什么webwork(http://baike.baidu.com/view/25660.htm)所以对struts2的机制还很莫生。
运行环境:
servlet contant :  apache-tomcat-6.0.20
IDE:   myeclipse7.0 (配套的eclipse为3.4)
JDK:   jdk1.6.0_03
---------------------------
1. 创建web项目 struts2Test
    1.1 在WEB-INF下的lib中拷入struts2的jar包。会在Referenced Libraries中显示。
          lib中不会显示,当程序发布后在tomcat中会显示这会jar包.
    1.2 项目的目录结构。如下图:


2. 在WebRoot下面建3个jsp文件.
   2.1  login.jsp
ContractedBlock.gifExpandedBlockStart.gifCode
<%&#64; page language&#61;"java" import&#61;"java.util.*" pageEncoding&#61;"GBK"%>
<%&#64; taglib prefix&#61;"s" uri&#61;"/struts-tags"%>
<%
String path &#61; request.getContextPath();
String basePath &#61; request.getScheme()&#43;"://"&#43;request.getServerName()&#43;":"&#43;request.getServerPort()&#43;path&#43;"/";
%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<base href&#61;"<%&#61;basePath%>">
        
<title>My JSP &#39;login.jsp&#39; starting pagetitle>
        
<meta http-equiv&#61;"pragma" content&#61;"no-cache">
        
<meta http-equiv&#61;"cache-control" content&#61;"no-cache">
        
<meta http-equiv&#61;"expires" content&#61;"0">
        
<meta http-equiv&#61;"keywords" content&#61;"keyword1,keyword2,keyword3">
        
<meta http-equiv&#61;"description" content&#61;"This is my page">
    
head>
    
<body>
        
<s:form name&#61;"pageform" action&#61;"login" namespace&#61;"/" method&#61;"post">
            
<s:textfield name&#61;"username" label&#61;"用户名" />
            
<s:password name&#61;"password" label&#61;"密码aa" />
            
<s:submit value&#61;"登录" />
        
s:form>
    
body>
html>
     2.2  success.jsp   内容随便去写吧。
     2.3  failed.jsp  
3.  修改WEB-INF下面的web.xml文件
      
ContractedBlock.gifExpandedBlockStart.gifCode
xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<web-app version&#61;"2.4" 
    xmlns
&#61;"http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi
&#61;"http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
&#61;"http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
    
<filter>
      
<filter-name>struts2filter-name>
      
<filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>
  
filter>
  
<filter-mapping>
      
<filter-name>struts2filter-name>
      
<url-pattern>/*url-pattern>
  
filter-mapping>
 
<welcome-file-list>
    
<welcome-file>index.jspwelcome-file>
  
welcome-file-list>
web-app>

    index.jsp
 

这个可以不写
4. 在src下建立action类 
    在src下建立包com.web  然后建立struts2Action.java类
ContractedBlock.gifExpandedBlockStart.gifCode
package com.web;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class struts2Action extends ActionSupport {
    
private String username;
    
private String password;

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password &#61; password;
    }

    
public String getUsername() {
        
return username;
    }

    
public void setUsername(String username) {
        
this.username &#61; username;
    }

    
// &#64;Override
    public String execute() throws Exception {
        
if (this.getUsername().equals("wj")
                
&& this.getPassword().equals("1234")) {
            ActionContext.getContext().getSession().put(
"user",
                    
this.getUsername());
            
return "success";
        } 
else {
            
return "error";
        }
    }

    
// &#64;Override
    public void validate() {
        
if (this.getUsername() &#61;&#61; null || this.getUsername().trim().equals("")) {
            addFieldError(
"username""用户名错误&#xff01;");
        }
        
if (this.getPassword() &#61;&#61; null || this.getPassword().trim().equals("")) {
            addFieldError(
"password""password 错误&#xff01;");
        }
    }
}
5. 在src下建立 struts.xml文件
ContractedBlock.gifExpandedBlockStart.gifCode
xml version&#61;"1.0" encoding&#61;"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&#61;"login" namespace&#61;"/" extends&#61;"struts-default">
        
<action name&#61;"login" class&#61;"com.web.struts2Action">
            
<result name&#61;"error">failed.jspresult>
            
<result name&#61;"success">success.jspresult>
            
<result name&#61;"input">login.jspresult>
        
action>
    
package>
struts>
6. 发布运行
    6.1 在如&#xff1a; D:\tomcat\apache-tomcat-6.0.20\conf 的下面有个server.xml 修改成
docBase为项目所在的位置  reloadable为true时不用返复重启tomcat 一般编写代码时写成true  发布后写成false以保存程序运行的稳定性.
<Context path&#61;"/struts2Test" docBase&#61;"D:\project\java_workspace\struts2Test\WebRoot" reloadable&#61;"true"/>
    -->
      
Host>
    
Engine>
  
Service>
Server>
    6.2   http://localhost:8088/struts2Test/login.jsp  点按钮提交后会变成 http://localhost:8088/struts2Test/login.action

转:https://www.cnblogs.com/wj-wangjun/archive/2009/08/14/1545984.html



推荐阅读
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • npm 发布 WhalMakeLink 包:链接管理与优化的新选择
    WhalMakeLink 是一个强大的 npm 工具,专为项目管理和优化而设计。它能够自动在项目的 README 文件中生成当前工程目录下所有子项目的链接地址,极大提升了开发效率和文档维护的便捷性。通过简单的 `npm init` 命令即可快速启动和配置该工具,适用于各种复杂项目结构。 示例演示了其基本用法和功能。 ... [详细]
  • 在 Tomcat 上部署 Jenkins 实现持续集成环境搭建
    本文介绍了如何在Tomcat服务器上部署Jenkins以构建持续集成环境。首先,需下载并解压Tomcat压缩包,例如 `apache-tomcat-8.5.37.tar.gz`。接着,为Tomcat创建一个管理用户,并对相关文件目录进行权限配置,确保Jenkins能够顺利运行于Tomcat之上。此外,还详细阐述了环境配置、服务启动及基本的故障排查技巧,为用户提供了一套完整的部署指南。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • 如何在Linux系统中实施网络流量监测与分析
    本文详细介绍了在Linux系统中实施网络流量监测与分析的方法。通过使用专业的工具和技术,读者可以有效地监控和分析网络流量,从而提高系统的安全性和性能。希望本文能为读者提供有价值的参考和实践指导。 ... [详细]
author-avatar
手机用户2502914287
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有