重温经典struts1之搭建环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

今天参加了一个项目,什么项目?struts1的项目,什么?!现在还有struts1的项目,读到这里你是不是和我一样惊讶,记得上次做struts1的项目还是在七八年前,是的,现在还真的有struts项目,并且还是大公司在用,好吧,既然有市场,我们还是重温下经典的struts框架吧。


一、Struts是什么?

简单说下struts,它是MVC的web框架,
MVC的C在struts里是前端控制器ActionServlet,它主要负责接收请求,读取struts-config.xml文件,分发请求到M
MVC的M泛指action类处理请求以及业务类和DAO类,最后使用ActionMapping来跳转页面(V)
MVC的V是视图,泛指页面,如JSP,HTML等,从action返回来的数据展示在浏览器的页面上
概念说完,我们动手搭建struts框架来实现一个简单的login功能

二、搭建Struts1环境

1.download jar包和tomcat服务器

通过下边的URL来download Struts1 jar包和tomcat服务器

  • Struts jar包(1.3.10的版本)
    https://archive.apache.org/dist/struts/1.3.10/
    struts-1.3.10-all.zip(struts核心jar包)
    struts-1.3.10-apps.zip(官方提供的空项目,用来参照web.xml和struts-config.xml文件的写法)
    struts-1.3.10-src.zip(关联IDE中的source code)
    tomcat
    https://tomcat.apache.org/download-80.cgi

2.创建web项目

打开eclipse创建动的带有web.xml的web项目,然后拷入struts和tomcat下的serverjar包

3.编写web.xml

定义前端处理器(ActionServlet)和struts-config.xml文件path,配置请求的后缀,如*.do或*.action
代码如下(示例):

   <!-- Standard Action Servlet Configuration --><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><!-- Standard Action Servlet Mapping --><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

3.编写struts-config文件

定义formbean,action及页面跳转
代码如下(示例):

       <form-beans><form-beanname="loginForm"type="XXX.xxx.form.LoginForm"/></form-beans><action-mappings><actionpath="/login"type="xxx.xxx.action.LoginAction"name="loginForm"scope="request"><forward name="success" path="/login_success.jsp"></forward><forward name="error" path="/login_error.jsp"></forward></action></action-mappings>

三、实现Login功能

1.编写action和form类以及jsp页面

将这些类和页面按照上边的第三步配入到struts-config.xml文件中
Action代码如下(示例):

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 xxx.xxx.form.LoginForm;public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {LoginForm lf = (LoginForm)form;String username = lf.getUsername();String password = lf.getPassword();if ("admin".equals(username)&&"admin".equals(password)) {return mapping.findForward("success");} else {return mapping.findForward("error");}}
}

FormBean代码如下(示例):

import org.apache.struts.action.ActionForm;@SuppressWarnings("serial")
public class LoginForm extends ActionForm {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

index.jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body><a href="login.jsp">login</a></body>
</html>

login.jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body><form action="login.do" method="post">username:<input type="text" name ="username"><br>password: <input type="password" name ="password"><br><input type="submit" value="login"></form></body>
</html>

login_success.jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>success!</body>
</html>

login_error.jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>error!!</body>
</html>

2.启动tomcat

启动IDE的Tomcat服务器

3.在浏览器输入http://localhost:8080/index.jsp

就可以跳转的login.jsp

总结

以上就是搭建struts框架来实现一个简单的login功能的步骤,struts1框架还有很多功能,我们一点点来学习,下篇见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux scatterlist 详解

源码基于&#xff1a;Linux 5.4 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中&#xff0c;企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去&#xff0c;从而造成不必要的违规及泄密风险&#xff0c;因此对终端用户进行规范的上网行为管理&#xff0c;既能有效预防重要数据泄密&#xff0c;同时也能提高员工办公效…

linux之tcpdump命令

在日常系统维护中&#xff0c;遇到需要抓包的需求&#xff0c;下面对linux环境使用tcpdump命令进行抓包进行分析记录。tcpdump命令可用抓取流动在网卡上的数据包。 1、tcpdump常用参数说明 -c : 抓包次数&#xff0c;达到指定次数后停止抓包-C : 文件大小&#xff0c;写入文件…

连续性变量的组间差异分析

目录 正态分布 正态分布检测 1&#xff1a;图像法 2:计算法 Shapiro–Wilk W检验&#xff08;小样本推荐&#xff09; Lilliefors正态性检验 Anderson–Darling 或AD检验 DAgostino检验&#xff08;大样本推荐&#xff09; 独立样本t检验 1&#xff0c;方差齐性检验 …

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c;而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架&#xff0c;它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…

如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取&#xff0c;实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限&#xff0c;下面我只展示这一种方法喽&#xff01; indexOf是什么 indexOf是返回指定内容在原字符串中的位置&#xff0c;该方法是从数组的start处或数组的…

JS实现堆排序

堆排序&#xff08;Heap Sort&#xff09;作为一种高效的排序算法&#xff0c;具有稳定的性能和卓越的时间复杂度。本文将深入研究堆排序的原理、实现方式等。 什么是堆排序 公众号&#xff1a;Code程序人生&#xff0c;个人网站&#xff1a;https://creatorblog.cn 堆排序是一…

按升序输出各个字符串。

编写程序&#xff0c;设计并实现如下功能&#xff1a;从键盘输入多个字符串&#xff0c;按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

Android多用户初探

参考博文:Android UserManagerService初始化_qluka的博客-CSDN博客 想限制多用户的行为,但是不知默认配置在哪?所以写写。 默认guest用户被限制的行为: ./frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.javaprivate static Bundle getDefaul…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

git 提交时忽略eslint检查

git commit -m “” –no-verify

Halcon深度学习药片检测

1.应用示例思路 (1) 标注数据并获取halcon字典形式的训练数据&#xff1b;(2) 数据预处理&#xff1b; (3) 模型训练&#xff1b;(4) 模型评估和验证&#xff1b;(5) 模型推理。 数据的标注使用labelimg工具&#xff0c;具体的参考以下博文&#xff1a; https://blog.csdn.…

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文&#xff08;点击这里&#xff09;&#xff0c;有助于理解。 模拟频率&#xff1a;f 模拟角频率&#xff1a;Ω 数字角频率&#xff1a;ω 其中&#xff1a;在模拟信号中Ω 2πf 正弦波表示&#xff1a;sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法&#xff0c;它通过将已经在一个任务上学习到的知识应用到另一个相关任务上&#xff0c;来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题&#xff0c;同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

出现数据库出现没有时间格式的错误,实体类Date类型不对导致时间报错

目录 报错现场解决办法java与mysql中的日期类型及二者的对应关系和使用场景 报错现场 数据库最早时间为2023年1月1日&#xff0c;前端查询后却出现2022年12月31日的数据 数据库时间类型为date swagger接口测试 解决办法 讲until的Date改成sql类的Date&#xff0c;就可以了…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…