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

Eclipse/JavaWeb(一)三大框架之struts框架持续更新中...

最近主要把javaweb的三大框架过一遍。(一)发展历史传统的JavaWeb应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使得程

最近主要把javaweb的三大框架过一遍。

(一)发展历史

传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使得程序分为几层,有负责前台展示的jsp、负责流程逻辑控制的servlet一级负责数据封装的Javabean。但是这种结构仍然存在问题:如JSP页面中需要使用<%%>符号嵌入很多的java代码,造成页面结构混乱,servlet和javabean负责了大量的跳转和运算工作,耦合紧密,程序复用率低等等。

Struts

为了解决以上问题,出现了Struts框架,他是一个完美的MVC实现,他有一个中间控制类(一个servlet),一个action类负责页面跳转和后台逻辑运算,一个或几个jsp页面负责数据的输入和输出显示,还有一个form类负责传递action和jsp中间的数据。jsp中可以使用struts框架提供的一组标签,就像使用html标签一样简单,但是可以完成非常复杂的逻辑。从此jsp页面中不需要出现一行<%%>包围的java代码了。

可是所有的运算逻辑都放在struts的action里将使得action类复用率低和逻辑混乱,所以通常人们会把整个web应用程序分为三层,struts负责显示层,它调用业务层完成运算逻辑。从此jsp页面中不需要出现一行<%%>包围的java代码了。

(二)小例子

这里简单介绍个关于struts框架的小例子。

首先,eclipse for java ee 工具,官网下载。

然后,struts2包,下载地址:http://www.pc6.com/softview/SoftView_108615.html 

进一步,在eclipse中新建dynamic web project,填写project name,其他默认如下图:

Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...

下一步,填写编译输出路径,默认为build\classes,可以改可以不改,默认即可。

下一步,勾选生成web.xml文件,finish。

一个dynamic web project就生成了,接下来加入相应jsp,action文件。

解压struts包,把其中struts-2.3.15.1\lib下的几个包拷贝到工程的WebContent/WEB-INF/lib目录下,工程结构如下:

Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...

根据需要拷贝你需要的jar包到lib包下,然后改写web.xml文件:



  Login
   
       
       struts2
       
       class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterclass>
    
    
    
       struts2
       /*
    
  
   Login.jsp
  

首页默认为Login.jsp。配置struts.xml文件,在src文件下创建struts.xml文件:


DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <package name="default" namespace="/" extends="struts-default">
        class="action.LoginAction">
            success.jsp  
            Login.jsp 
        
    package>

注:struts.xml文件一定创建在src目录下,创建的web project默认src包在Java  Resources下,而不在WebContent/WEB-INF下。

在src下新建一个包action,在action下创建LoginAction.java文件:

package action;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
    private static final long serialVersiOnUID= 1L;
    public String loginName,password,message;
    
    public String execute() throws Exception
    {
        System.out.println("username:"+loginName+"; password:"+password);
        if ("admin".equals(loginName)&&"admin".equals(password)) {
            message=loginName+" Login Success!";
            
        }else {
            message=loginName+" Login Failed!";
            return INPUT;
        }
        return SUCCESS;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    

}

在WebContent目录下创建Lgin.jsp和success.jsp文件:

Login.jsp:

<%@ page language="java" cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>







    
${requestScope.message }

success.jsp:

<%@ page language="java" cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>



 
content="text/html; charset=UTF-8">



    Login Success!

然后运行,输入正确的用户名和密码:admin admin 提交
Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...

 

 Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...

输入错误的用户名和密码,提交:

Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...

登陆模块算是简单的完成。

 (三)。。。


推荐阅读
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
author-avatar
蘚小凤_950
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有