1、实现功能: 用户输入用户名和密码,当用户名是“test”时,跳转到登录成功界面;若不是,跳转到登录失败界面。
2、第一步:编写login.jsp页面: 输入框为用户名和密码,点击“提交”进行表单提交,action="<%=request.getContextPath()%>/login.do" method=“post”,action的路径是login.do,下一步配置web.xml文件。

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/login.do" method="post"> 用户名:<input type="text" name="username"></br>  <!--此处name与后面form的成员变量相同,否则:警告: Unhandled exception:java.lang.NullPointerException-->密码:<input type="text" name="password"><input type="submit" value="提交">
</form>
</body>
</html>

3、配置web.xml文件: 对所有url=“*.do”,servlet的那么都为action,其对应的类都是org.apache.struts.action.ActionServlet,此处直接引用了structs的类。接着初始化相关的配置参数:,引入/WEB-INF/struts-config.xml文件对form和action进行配置。
注:myeclispe动态项目下,无法打开struts-config.xml文件,此时出现Project StructsTest is not configured as a MyEclipse Web-Struts Project. Therefore the MyEclipse Struts Editor may not b错误
解决方案一:在项目下的.project文件里添加一行代码:<nature>com.genuitec.eclipse.cross.easystruts.eclipse.easystrutsnature</nature>
解决方案二:右键单击工程,选择MyEclipse->add Struts capabilities(由于myeclipse版本问题,我并没有找到该选项,该方法并没有实践过。)
为了方便学习,我更换了ide,用eclipse进行开发,eclipse不会出现这个问题。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <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>0</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>

4、配置structs-config.xml文件:
注:<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">若版本写错,会出现**Content is not allowed in prolog.**错误,原因是无法识别,因为导入的是structs1.3.8,需要与声明一致。另当eclipse中一直提示“Content is not allowed in prolog”错误是,先重新编译一遍程序查看错误是否还存在。
<!DOCTYPE struts-config PUBLIC中 struts-config写成struts也会报错,会出现文档根元素 "struts-config" 必须匹配 DOCTYPE 根 "struts"。错误。

<?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,type="当前bean的完整类名,此处的bean用于src下面,故直接为LoginForm"--><form-bean name="loginForm" type="LoginForm" ></form-bean></form-beans>   <action-mappings><!--声明一个action,type="当前action的完整类名,此处的action用于src下面,故直接为LoginAction"--><action path="/login" type="LoginAction" name="loginForm"><!--声明action如何跳转,path为跳转路径"--><forward name="loginFailure"  path="/loginFailure.jsp"></forward><forward name="loginSuccess"  path="/loginsuccess.jsp"></forward></action></action-mappings>
</struts-config>

5、LoginForm.java文件:

import org.apache.struts.action.ActionForm;public class LoginForm extends ActionForm{/** fields LoginForm.java*/private static final long serialVersionUID = 1L;public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}private String password;private String username;
}

**6、LoginAction.java:**重写execute方法

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;
public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse httpservletresponse)throws Exception {LoginForm loginform = (LoginForm)form; //强制转换System.out.println("进入到action");if(loginform.getUsername().equals("test")){return mapping.findForward("loginSuccess"); //为‘test’跳转到成功界面}else{return mapping.findForward("loginFailure");}}}

7、loginFailure.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
登录失败
</body>
</html>

8、loginSuccess.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
登录成功
</body>
</html>

9、java.lang.ClassNotFoundException: org.apache.struts.action.ActionServlet
在bin目录下导入structs的包

下载链接:https://download.csdn.net/download/abracadabra__/11025487

Structs入门:实现简单的登录操作相关推荐

  1. C语言实现简单的登录操作

    编写代码实现,模拟用户登录情景,并且只能登录三次. 要实现这种操作,我们需要设置一个字符串arr1用来存放密码,同时还要手动输入一个字符串password来记录我们输入的字符串,并将password与 ...

  2. 【React】React中设计一个简单的登录操作模板

    基本思路 获取input元素中输入的用户名和密码,使用axios发送请求进行匹配,如果用户名和密码正确,则进行路由跳转 使用的库 都使用了目前的最新版本 "react": &quo ...

  3. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  4. VS2015+qt5.11入门(实现计算机的加法和登录操作)

    1.在vs中新建qt项目 2.打开Form Files中的.ui文件.即打开qt creator界面 3.在界面中添加两个label,两个LineEdit,一个计算按钮.点击保存 控件右击--> ...

  5. Struts2框架完成登录操作案例

    一个简单的登录案例思路分析 在这个案例中,我们要使用struts2框架怎样解决 重点: struts2框架如何完成原来由servlet完成的工作. Struts2框架如何完成请求参数的封装处理 Str ...

  6. mysql入门很简单系列视频-学习笔记

    mysql入门很简单系列视频-学习笔记 视频链接:mysql入门很简单系列视频 https://www.bilibili.com/video/av14920200/ 以前主要就了解DDL.DML.DC ...

  7. Vue.js快速入门之八:实现登录功能

    系统登录是指用户必须提供满足一定条件的信息后,才可以进入系统.最早系统一般是指用户名和密码,如今,登录方式已多元化,系统一般登录方式有:用户名+密码.二维码扫码登录.第三方授权登录.手机号+短信登录等 ...

  8. Python 多线程入门和简单的基于多线程的流量泛洪攻击

    | 警告:仅供参考学习,不得做违法的事!免责声明:本文仅仅只是展示攻击手段,提高防范意识.任何由于该文章产生的消极后果与本作者无关. 多线程入门 # 多线程模块导入 import threading# ...

  9. bae index.php,【微信公众平台开发】之一:入门与BAE3.0下操作

    0.资料 *<微信公众平台搭建与开发揭秘> 1.开发者模式基本功能 编辑模式比较简单,登录mp.weixin.qq.com一看就会,在此略过.若要申请自定义菜单>微信认证>30 ...

最新文章

  1. BUUCTF-Reverse:reverse2
  2. Android 设计模式 - 装饰者模式
  3. python安装pyqt5 qml_用 PyQt5 和 QML 做了个小工具,,感觉 PyQt 和 QML 的交互比较繁琐...
  4. ADO+MFC数据库编程常用语句
  5. 针对敲诈病毒(WanaCrypt0r2.0)的应对方案
  6. Android tinyplay与tinycap流程(十六)
  7. 云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
  8. c语言队列的作用,C语言队列
  9. 74系列芯片功能大全
  10. 烽火通信2018校招软件工程师编程题 - 题解
  11. 多关键词匹配个人解决方案
  12. 关于打开网页FLASH显示叉叉问题
  13. Linux第一个正式版本,你安装的第一个Linux系统是什么版本的,成功没有啊?
  14. VBA Excel如何在工作表区域内查找某个值,发回这个值所在的行号、列号
  15. 微软打印机驱动服务器,无法通过 Windows Server 中的 Windows 更新来安装打印机驱动程序 - Windows Server | Microsoft Docs...
  16. 洛谷 P1878 舞蹈课 —— 小顶堆
  17. 竞品分析:小宇宙APP——如何在播客领域站住脚?
  18. Centos搭建服务
  19. 大陆中文网站流量排名前100
  20. P4 Tutorial 快速上手 (3) Basic_tunnel

热门文章

  1. 转变:从SQL技术栈到图技术栈
  2. 苏大计算机与科学技术学院录取名单,苏州大学各学院(部)已陆续公布2017年硕士研究生拟录取名单...
  3. VC操作EXCEL2003
  4. python excel数据处理功能模块_Python 之Excel 数据处理
  5. @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  6. 运筹学答案-钱颂迪-免费领取
  7. Qt中 QPainter 刷新出现的问题
  8. 安装Selenium2Library步骤以及加载Selenium2Library时为红色
  9. 必看!一名全栈工程师的必备“百宝箱”
  10. 推荐一些2021年适合做webapp、跨平台app的几个毕业设计主题,也适合做微信小程序毕设主题