Structs入门:实现简单的登录操作
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入门:实现简单的登录操作相关推荐
- C语言实现简单的登录操作
编写代码实现,模拟用户登录情景,并且只能登录三次. 要实现这种操作,我们需要设置一个字符串arr1用来存放密码,同时还要手动输入一个字符串password来记录我们输入的字符串,并将password与 ...
- 【React】React中设计一个简单的登录操作模板
基本思路 获取input元素中输入的用户名和密码,使用axios发送请求进行匹配,如果用户名和密码正确,则进行路由跳转 使用的库 都使用了目前的最新版本 "react": &quo ...
- Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...
- VS2015+qt5.11入门(实现计算机的加法和登录操作)
1.在vs中新建qt项目 2.打开Form Files中的.ui文件.即打开qt creator界面 3.在界面中添加两个label,两个LineEdit,一个计算按钮.点击保存 控件右击--> ...
- Struts2框架完成登录操作案例
一个简单的登录案例思路分析 在这个案例中,我们要使用struts2框架怎样解决 重点: struts2框架如何完成原来由servlet完成的工作. Struts2框架如何完成请求参数的封装处理 Str ...
- mysql入门很简单系列视频-学习笔记
mysql入门很简单系列视频-学习笔记 视频链接:mysql入门很简单系列视频 https://www.bilibili.com/video/av14920200/ 以前主要就了解DDL.DML.DC ...
- Vue.js快速入门之八:实现登录功能
系统登录是指用户必须提供满足一定条件的信息后,才可以进入系统.最早系统一般是指用户名和密码,如今,登录方式已多元化,系统一般登录方式有:用户名+密码.二维码扫码登录.第三方授权登录.手机号+短信登录等 ...
- Python 多线程入门和简单的基于多线程的流量泛洪攻击
| 警告:仅供参考学习,不得做违法的事!免责声明:本文仅仅只是展示攻击手段,提高防范意识.任何由于该文章产生的消极后果与本作者无关. 多线程入门 # 多线程模块导入 import threading# ...
- bae index.php,【微信公众平台开发】之一:入门与BAE3.0下操作
0.资料 *<微信公众平台搭建与开发揭秘> 1.开发者模式基本功能 编辑模式比较简单,登录mp.weixin.qq.com一看就会,在此略过.若要申请自定义菜单>微信认证>30 ...
最新文章
- BUUCTF-Reverse:reverse2
- Android 设计模式 - 装饰者模式
- python安装pyqt5 qml_用 PyQt5 和 QML 做了个小工具,,感觉 PyQt 和 QML 的交互比较繁琐...
- ADO+MFC数据库编程常用语句
- 针对敲诈病毒(WanaCrypt0r2.0)的应对方案
- Android tinyplay与tinycap流程(十六)
- 云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
- c语言队列的作用,C语言队列
- 74系列芯片功能大全
- 烽火通信2018校招软件工程师编程题 - 题解
- 多关键词匹配个人解决方案
- 关于打开网页FLASH显示叉叉问题
- Linux第一个正式版本,你安装的第一个Linux系统是什么版本的,成功没有啊?
- VBA Excel如何在工作表区域内查找某个值,发回这个值所在的行号、列号
- 微软打印机驱动服务器,无法通过 Windows Server 中的 Windows 更新来安装打印机驱动程序 - Windows Server | Microsoft Docs...
- 洛谷 P1878 舞蹈课 —— 小顶堆
- 竞品分析:小宇宙APP——如何在播客领域站住脚?
- Centos搭建服务
- 大陆中文网站流量排名前100
- P4 Tutorial 快速上手 (3) Basic_tunnel
热门文章
- 转变:从SQL技术栈到图技术栈
- 苏大计算机与科学技术学院录取名单,苏州大学各学院(部)已陆续公布2017年硕士研究生拟录取名单...
- VC操作EXCEL2003
- python excel数据处理功能模块_Python 之Excel 数据处理
- @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
- 运筹学答案-钱颂迪-免费领取
- Qt中 QPainter 刷新出现的问题
- 安装Selenium2Library步骤以及加载Selenium2Library时为红色
- 必看!一名全栈工程师的必备“百宝箱”
- 推荐一些2021年适合做webapp、跨平台app的几个毕业设计主题,也适合做微信小程序毕设主题