struts1框架基本(笔记)

article/2025/11/5 20:29:05

在阿帕奇官网下载合适的struts1框架文件。

应用在显示层框架。

struts1与struts2虽然是一脉相承,但它们用法完全不一样。

struts2是在struts1与webwork基础上,发展的全新框架。

注:本文是在MyEclipse下进行的操作,不是之前的Eclipse。

一、文件结构

app:示例程序,其中的war包放至tomcat可直接运行 。

docs:文档,里面有关于struts的各个组件的说明。

lib:Jar包,几乎很全,不需要自己在单独下载Jar包。

src:存放着源代码。

二、处理流程的改变 

没有struts时,一般网页直接将请求发送给响应处理的Servlet页面,有页面进行处理。所有的JavaBean由我们自己在对应的位置创建。

struts框架下,将ActionServlet作为核心,它负责获取、分发URL,由Action调用模型,由Form接收数据并创建JavaBean的实例。


没有struts时的大致流程为:访问链接->寻找web.xml中mapping(或者@WebServlet("/"))是否匹配->通过配置初始化相应的Servlet后调用模型->返回。

struts的大致流程即为:访问链接->web.xml中mapping是否与ActionServlet匹配,匹配的话->ActionServlet->通过struts-config.xml调用action并将其初始化->action调用模型后返回ActionServlet。

三、配置struts文件

导入lib

如果没有spring框架,在自己编写时,建议不要将lib中所有的东西导入项目,以避免报错。可以从示例程序中复制相关jar包。

需要的jar包导入项目中WEB-INF的lib即可。记得通过BuildPath导入资源。

配置web.xml文件

类似servlet配置。别忘了设置编码格式。

可以直接复制其示例程序下的配置内容。通过<servlet-mapping>,使得与<url-pattern>匹配的URL,映射为<servlet>中拥有相同<servlet-name><servlet-class>路径。

   <servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><load-on-startup>2</load-on-startup>
</servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

即凡是通过*do访问的,都会通过action这个名称,被修改为访问org.apache.struts.action.ActionServlet这个地址。

<init-param>为该servlet的初始化设置。

<param-name>为变量名。

<param-value>为变量值,此处是用struts-config.xml进行初始化

<load-on-startup>为服务器启动时,该servlet的初始化顺序。(不设置时,就只有访问时会被初始化)

拷贝struts-config.xml

将示例程序中直接struts-config.xml拷过去。别忘了设置编码格式。

 可以这样打开

将多余的配置删除

四、用struts完成登录

准备三个页面,一个用于输入用户名密码,另外两个作为登录成功或失败的结果页面。

准备一个JavaBean用于封装登录用的数据,他需要继承ActionForm。(如果没有找到,则需要通过右键选择BuildPath构建路径)

准备一个Servlet,为了省事,目前将业务逻辑也写在里面。

登录主页:index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="JavaBean.Note" %>
<%
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 'index.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"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="Login.do" method="post">用户:<input type="text" name = "uname"></br>密码:<input type ="password" name = "pwd"><br/><input type = "submit" value = "登录"></form></body>
</html>

JavaBean部分:User.java

继承ActionForm后,就可以自动赋值。但需要name名和setName的名称一致(格式也是),其它和之前没差别。

package JavaBean;
import org.apache.struts.action.ActionForm;
public class User extends ActionForm {private static final long serialVersionUID = 1L;//Action序列号private int uid;private String uname;private String uimage;private String pwd;public int getUid() {return this.uid;}public String getUname() {return this.uname;}public String getUimage() {return this.uimage;}public String getPwd() {return this.pwd;}public void setUid(int UID) {this.uid = UID;}public void setUname(String UNAME) {this.uname = UNAME;}public void setUimage(String UIMAGE) {this.uimage = UIMAGE;}public void setPwd(String PWD) {this.pwd = PWD;}
}

Servlet部分:User Login

此处制作了控制层,因而并未连接数据库,而是直接对比。若需要连接,可查看之前代码。

package Service;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import JavaBean.User;public class UserLogin extends Action {@Overridepublic ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse reponse) throws Exception {User user = (User)form;//form中数据就是自动创建的Userif(user.getPwd().equals("123") && user.getUname().equals("123")){//request.getRequestDispatcher("success").forward(request, reponse);return mapping.findForward("success");}else {//request.getRequestDispatcher("fail").forward(request, reponse);return mapping.findForward("error");}}
}

struts-config设置

  1. 首先检测到以".do"(web.xml中设置的)结尾的URL,然后会在<action-mapping>中的<action>寻找找相同的字段(".do"之前字段)。
  2. 随后通过name寻找相同的<form-bean>name,然后通过type的路径,找到JavaBean对象。然后将值自动输入,得到的类以ActionForm form形式返回。
  3. 然后继续<action-mapping>,通过type找到Servlet。将设置<action>中设置以ActionMapping mapping输入,将创建的JavaBeanActionForm form输入。其余两个参数同原来的Servlet一致。
  4. scope用于限定创建的ActionForm的范围,于JavaWeb一致。
  5. Servlet中,通过findForward找到name所对应的path,返回,就可以通过请求转发的方式抵达下一个网站。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN""http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config><form-beans><form-bean name="User" type="JavaBean.User"/></form-beans><action-mappings><action path="/Login"name = "User"type="Service.UserLogin"scope = "request"><forward name="success" path="/success.jsp"/><forward name="error" path="/fail.jsp"/></action></action-mappings>
</struts-config>

修改之后,记得重启服务器。


http://chatgpt.dhexx.cn/article/NKAXLTvT.shtml

相关文章

Struts1介绍

struts&#xff1a;[strʌts]支柱; 撑杆; 支杆; 支撑; 趾高气扬的步态; 高视阔步的样子; 引入struts Model1结构如图1所示&#xff1a; Model1是一个以JSP文件为中心的模式&#xff0c;在这种模式中JSP页面不仅负责表现逻辑&#xff0c;也负责控制逻辑。专业书籍上称之为逻辑…

入门Struts1第一讲——Struts1入门就这么简单

现在终于进入框架的学习中了&#xff0c;后面还有好几个框架等待着我们呢&#xff01;我们先来学习Struts1框架&#xff0c;然后再过渡到Struts2框架的学习中。下面我们开始学习Struts1框架之旅。 Struts1简介 Struts1是Apache开发的一个web层的框架&#xff0c;它主要用于简…

连接微软云的几种方式

1&#xff0c;通过管理portal连接微软云 需要使用liveId 2&#xff0c;通过visual web developer 直接更新 需要.cer(509)证书 3.通过远程登录管理 需要XXXXX-Staging-WebRole1_IN_0.rdp文件 PowerShell 需要管理证书

使用微软的OneDrive给别人分享大文件,非常方便

假设我想把这个40多MB的文件分享给一位同事&#xff1a; 在右键菜单里选share&#xff1a; 指定我要分享给谁&#xff1f; 假设我分享给这位姓丁的同事&#xff0c;OK了&#xff1a; 要获取更多Jerry的原创文章&#xff0c;请关注公众号"汪子熙":

谷歌云盘文件快速下载方法

最近看的论文附带的数据集在谷歌云盘里&#xff0c;每个文件都有十个G左右的大小&#xff0c;而直接从谷歌云盘下载速度过慢而且有可能中断&#xff0c;而multcloud是一个非常好的多云盘管理软件。他可以通过国内网直接登录操作&#xff0c;我们可以通过multcloud将谷歌云盘的文…

Win10安装OneDrive(微软云盘)后无法打开

https://jingyan.baidu.com/article/ce4366496a3ae73773afd3f8.html 这里为Win10系统正常下载OneDrive安装包安装成功后&#xff0c;打开或闪退或没反应的情况 工具/原料 OneDrive&#xff08;微软网盘&#xff09; Win10系统 方法/步骤 按住键盘上的Win&#xff08;就是左下…

开源网盘系统推荐 - 开源云盘 - 安装及开发教程

开源网盘系统推荐 - 开源云盘 - 安装及开发教程 云盘界面 介绍 本开源云盘致力于打造成一个优雅&#xff0c;好用&#xff0c;高效&#xff0c;克制的开源云盘。 在线体验 (账号demo/123456) 软件架构 本开源云盘采用前后端分离的模式开发。后端使用Golang语言&#xff0c;前…

onedrive php 上传文件,使用Aria2自动上传文件到onedrive教程

1、先在onedrive中建立一个upload文件夹来统一接收上传 2、然后开始建个环境 宝塔 或lnmp都可以&#xff0c;nginxphp(数据库用不到&#xff0c;装不装无所谓) 3、建立两个站点dl.example.com(下载用) pan.example.com(网盘用) 4、安装aria2&#xff0c;这里推荐逗比大佬的一键…

说说云盘背后的黑科技!

2019独角兽企业重金招聘Python工程师标准>>> ***当下&#xff0c;随着存储技术的飞速发展&#xff0c;各大公司都推出了云存储服务。但因为是免费面向大众的&#xff0c;无论微软的OneDrive还是百度的云网盘&#xff0c;好多人都难理解他们如何支撑起如此庞大的存储…

微软云 命令重启mysql_创建运行 MySQL 的经典 Azure VM - Azure Virtual Machines | Microsoft Docs...

在使用经典部署模型创建的运行 Windows Server 2016 的虚拟机上安装 MySQL 01/23/2017 本文内容 重要 经典 VM 将于 2023 年 3 月 1 日停用。 如果从 ASM 使用 IaaS 资源&#xff0c;请在 2023 年 3 月 1 日之前完成迁移。 我们建议你尽快进行切换&#xff0c;以利用 Azure 资源…

清除此计算机中wps云盘,教大家Win10系统删除WPS网盘的方法,爱纯净官网

Win10系统如何删除WPS网盘&#xff1f;现在使用Win10系统的朋友越来越多了&#xff0c;在Win10系统中如果安装了WPS办公软件&#xff0c;那么在电脑文件中就会看到一个名为WPS的网盘名称。有些用户想要将其卸载&#xff0c;那Win10怎么删除WPS网盘呢&#xff1f;所以接下来小编…

普通用户申请微软的OneDrive免费网盘,容量5T、5T、5T,重要事情说三遍!!!!!

注意&#xff1a;以下网站由于都懂得的原因打开速度较慢&#xff08;此问题可以通过添加代理方式解决&#xff09; 第一步 打开如下网址:https://t.odmail.cn/界面如下 该网址是一个临时邮箱接收地址&#xff08;后面用来接收验证码&#xff09;。 可以点击1处刷新系统自动生…

加速微软云服务在中国大陆的连接体验

由于种种原因&#xff0c;很多朋友在国内无法顺畅访问微软云服务&#xff08;包括登录Outlook邮箱、OneNote笔记、OneDrive网盘、Xbox在线游戏等等&#xff09;。对于那些了解计算机的朋友&#xff0c;可能会使用一些“魔法”来加速访问&#xff0c;但在境内使用未经登记的“魔…

微软云服务器登录不上去,云服务器登入不了怎么重启

云服务器登入不了怎么重启 内容精选 换一换 本节操作介绍Linux操作系统云服务器在单用户模式下重置密码的操作步骤。本文档适用于X86架构的弹性云服务器。进入单用户模式下重置root密码前请先做好数据备份。请根据操作系统类型选择操作步骤&#xff1a;CentOS 8系列CentOS 7/Eu…

微软OneDrive云盘5T大容量免费申请

博主分享一个亲测有效的OneDrive获取5T的方法&#xff0c; OneDrive云盘在国内的下载速度还是相当可以的&#xff0c;5T的大空间相信也能满足绝大部分人&#xff0c;教育版的子账号还是很稳的&#xff0c;欢迎上车&#xff0c;但是本人不提供任何技术支持&#xff0c;有需要还是…

最新免费申请微软OneDrive5TB云盘超详细教程!(已亲测!)

https://www.cnblogs.com/wangyunfei/p/9836580.html 18年10月份最新免费申请微软OneDrive5TB云盘超详细教程&#xff01;&#xff08;已亲测&#xff01;&#xff09; 本人已于今天10月23日亲测&#xff0c;成功获取微软OneDrive5T云盘&#xff01; 第一步&#xff1a;.打开…

微软云盘OneDrive和Dropbox云盘的比较分析

微软Office365和office 2013中都有OneDrive的身影&#xff0c;通过和SharePoint配合&#xff0c;能够显示出微软在云和端方面的巨大优势。如下图&#xff0c;在Windows 10操作系统中&#xff0c;安装Office2013后自带的OneDrive。 利用云存储进行多台电脑文件的同步&#xff0c…

微软e5服务器,微软发布Office 365 E5计划

微软的Office365正处在一个版本更替的频发期,我对此次新计划的出炉毫不为奇——在上周奥兰多的微软全球合作伙伴会议上,官方宣布Office 365的原E4计划将被誉为“黄金Office365企业套餐”(premium Office 365 Enterprise Suite)的E5计划所取代。 根据微软的官方说法新的计划“…

教你免费申请5T的微软OneDrive云盘

相信大家都受够了坑爹的某度云盘了&#xff0c;如果需要自己保存在里面的资料&#xff0c;那稍微大点的文件就要花时间等了&#xff0c;不开会员就限速&#xff0c;坑爹。最近&#xff0c;我偶然发现了可以免费申请5T大小的微软OneDrive&#xff0c;那么接下来&#xff0c;我就…

怎么用微软云盘自动备份文件_微软通过自动更新打破了Windows 10的文件关联

怎么用微软云盘自动备份文件 File associations no longer work properly on Windows 10 after a buggy update. Windows won’t let you select certain applications as your defaults. We tested multiple PCs running the stable version of Windows 10, and they all had …