1 新建项目




  • 拷贝 jar

  • web.xml配置 ActionServlet
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"><display-name>LoginDemoStruts1</display-name><!-- 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><!-- The Usual Welcome File List --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

  • 配置文件struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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="loginForm" type="com.tzb.struts1.LoginActionForm"/></form-beans><action-mappings><action path="/login"type="com.tzb.struts1.LoginAction"name="loginForm"scope="request"><forward name="success" path="/login_success.jsp"></forward><forward name="error" path="/login_error.jsp"></forward>           </action></action-mappings></struts-config>

jsp 页面

  • index.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>主页</title>
</head>
<body><a href="login.jsp">登录</a>
</body>
</html>
  • login.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>登录页面</title>
</head>
<body><form action="" method="post">用户:<input type="text" name="username"><br/>密码:<input type="password" name="password"><br/><input type="submit" value="登录"><br/></form>
</body>
</html>

  • ActionForm
package com.tzb.struts1;import org.apache.struts.action.ActionForm;/*** 负责收集数据* 表单的属性必须和ActionFrom中的get\set的属性一致* @author tzb**/
@SuppressWarnings("serial")
public class LoginActionForm 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;}}

  • Action
package com.tzb.struts1;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;/*** 取得表单数据,调用业务逻辑,返回转向信息* * @author tzb**/
public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception {// TODO Auto-generated method stubLoginActionForm laf = (LoginActionForm) form;String username = laf.getUsername();String password = laf.getPassword();if ("admin".equals(username) && "admin".equals(password)) {// 登录成功return mapping.findForward("success");} else {return mapping.findForward("error");}}}

  • 启动

1.1 程序执行流程


2 进一步划分 Action职责

  • UserManager
package com.tzb.struts1;public class UserManager {public void login(String username,String password ) {if(!"admin".equals(username)) {throw new UserNotFoundException();}if(!"admin".equals(password)) {throw new PasswordErrorException();}}
}
package com.tzb.struts1;public class PasswordErrorException extends RuntimeException {}

  • Action
package com.tzb.struts1;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;/*** 取得表单数据,调用业务逻辑,返回转向信息* * @author tzb**/
public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception {//       LoginActionForm laf = (LoginActionForm) form;
//      String username = laf.getUsername();
//      String password = laf.getPassword();
//      if ("admin".equals(username) && "admin".equals(password)) {//          // 登录成功
//          return mapping.findForward("success");
//      } else {//          return mapping.findForward("error");
//      }LoginActionForm laf = (LoginActionForm) form;String username = laf.getUsername();String password = laf.getPassword();UserManager userManager = new UserManager();try {userManager.login(username, password);return mapping.findForward("success");} catch (UserNotFoundException e) {e.printStackTrace();request.setAttribute("msg", "找不到用户,名称=【" + username + "】");} catch (PasswordErrorException e) {e.printStackTrace();request.setAttribute("msg", "密码错误");}return mapping.findForward("error");}
}

  • login_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!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>登录失败</title>
</head>
<body><%-- <%= request.getAttribute("msg") %> --%><!-- 使用EL表达式 -->${msg}
</body>
</html>




  • login_success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!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>登录成功</title>
</head>
<body>${loginForm.username}登录成功
</body>
</html>

Struts框架实战精讲 struts1(2)- 登录案例相关推荐

  1. 人工智能框架实战精讲:Keras项目-英文语料的DNN、Word2Vec、CNN、LSTM文本分类实战与调参优化

    Keras项目-英文语料的文本分类实战 一.机器学习模型 1.1 数据简介 1.2 数据读取与预处理 1.3 数据切分与逻辑回归模型构建 二.全连接神经网络模型 2.1 模型训练 2.2 模型结果展示 ...

  2. 视频教程-2020最新微信小程序基础+实战精讲视频-微信开发

    2020最新微信小程序基础+实战精讲视频 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure ...

  3. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  4. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL

    19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...

  5. npm 实战精讲-曾亮-专题视频课程

    npm 实战精讲-1249人已学习 课程介绍         通过 npm 命令可以安装 Node.js 第三方库,但如何正确的使用 npm 命令,如何发布自己的库,是很多童鞋的想要掌握的,这套课程会 ...

  6. 51单片机c语言应用开发三位一体实战精讲 pdf 119网盘,51单片机C语言应用开发三位一体实战精讲.pdf...

    燎舍黪曩饔黠抽璇漩 黏 地丛书 刘波文 ∷ :著 对 向 编 策划编辑 :胡晓柏 : 正 圭 飚翻 Ξ∶ 蓝设计 寸面设计 8Π 颥曩曩罂 内容简介 51系 (SO51/ATSg)为 工程 心 全书以 ...

  7. Python机器学习全流程项目实战精讲(2018版)

    Python机器学习全流程项目实战精讲(2018版) 网盘地址:https://pan.baidu.com/s/16SSVq74YC07M0dW1iDekPg 提取码: vu7r 备用地址(腾讯微云) ...

  8. 视频教程-PR教程-Premiere 2020影视剪辑实战精讲-其他

    PR教程-Premiere 2020影视剪辑实战精讲 Adobe平面设计与影视剪辑专家讲师.微软Office办公软件专家讲师.资深IT图书作者/策划人/出版人.深度/终身学习研究与实践者.Python ...

  9. React实战精讲(React_TS/API)

    英国诗人 萨松在诗歌 <与我,过去.现在以及未来>中写道:"In me the tiger sniffs the rose" 诗人余光中将其翻译为:"心有猛虎 ...

最新文章

  1. B2B2C网站系统建设的常见误区
  2. linux中cp:overwrite提示的问题
  3. 专车降价滴滴快车使命终结?
  4. 968. 监控二叉树(递归+贪心)
  5. Database 2 Day DBA guide_Chapter3
  6. 将tomcat添加到服务中
  7. 栈windows linux,Linux+Windows: 程序崩溃时,在 C++ 代码中,如何获取函数调用栈信息...
  8. 嵌入式知识概要(1)
  9. Java NIO编程基础
  10. 通过 HttpClient 下载 文件
  11. 2021费控报销领域最具商业合作价值企业盘点
  12. STM32 内核复位 与 系统复位 区别及程序实现
  13. 袋鼠云数据中台专栏2.0 | 数据中台之数据源
  14. 怎么查快递单号,查询物流状态未签收单号
  15. word饼图如何画引导线_excle怎么画立体饼图/如何在饼形图中添加引导线(Excel)...
  16. 居然有人问,软件测试算是程序员吗?
  17. 第九次作业(输出杨辉三角形)
  18. Git常规配置与用法(记录,git配置文件在系统用户文件夹下)
  19. java Jxl 操作Excel
  20. VirtualBox错误:VERR_NEM_VM_CREATE_FAILED: What do I do?

热门文章

  1. EventLoop(回顾)
  2. 阿里巴巴微服务注册中心ConfigServer
  3. 计算机毕业设计_基于SSM的医院预约挂号系统设计与实现
  4. sorted()排序详解
  5. 【转】UAP studio基础使用技巧
  6. 0-Linux 网络编程修炼指南——内功心法
  7. Revit建模中 构件视图隐藏怎么操作?
  8. JetBrains又出编程神器!
  9. vi编辑器的四种退出方式
  10. ajax请求服务器端数据