从今天开始,一起跟 各位聊聊java的三大框架——SSH。先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在 运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。今天通过一个简单的例子来说说Struts。

登录页面:

这里面没啥东西,主要就是将action命名成“.do”的形式,让Struts通过配置文件来执行相应操作。

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
  4. <title>Insert title here</title>
  5. </head>
  6. <body>
  7. <form action="login.do" method="post">
  8. 用户:<input type="text" name="username"><br>
  9. 密码:<input type="password" name="password"></br>
  10. <input type="submit" value="登录">
  11. </form>
  12. </body>
  13. </html>

PS:表单中的name值必须跟对应的actionform的get、set属性一致。

web.xml:

它的作用就是告诉Struts它的配置文件(struts-config.xml)在哪,让Struts可以找到,还有执行的动作(.do),还有加载顺序之类的。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7. <welcome-file-list>
  8. <welcome-file>login.jsp</welcome-file>
  9. </welcome-file-list>
  10. <servlet>
  11. <servlet-name>action</servlet-name>
  12. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  13. <init-param>
  14. <param-name>config</param-name>
  15. <param-value>/WEB-INF/struts-config.xml</param-value>
  16. </init-param>
  17. <load-on-startup>2</load-on-startup>
  18. </servlet>
  19. <!-- Standard Action Servlet Mapping -->
  20. <servlet-mapping>
  21. <servlet-name>action</servlet-name>
  22. <url-pattern>*.do</url-pattern>
  23. </servlet-mapping>
  24. </web-app>

struts-config.xml:

从名字上就能看出来,这是Struts的配置文件。form-bean用来接收提交的表单数据,action-mappings用来执行相应的动作。

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE struts-config PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
  4. "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
  5. <struts-config>
  6. <form-beans>
  7. <form-bean name="loginForm" type="com.lsj.struts.LoginActionForm"/>
  8. </form-beans>
  9. <action-mappings>
  10. <action path="/login"
  11. type="com.lsj.struts.LoginAction"
  12. name="loginForm"
  13. scope="request"
  14. >
  15. <forward name="success" path="/login_success.jsp" />
  16. <forward name="error" path="/login_error.jsp"/>
  17. </action>
  18. </action-mappings>
  19. </struts-config>

这个类就是用来处理用户登录的业务逻辑

  1. package com.lsj.struts;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.apache.struts.action.Action;
  5. import org.apache.struts.action.ActionForm;
  6. import org.apache.struts.action.ActionForward;
  7. import org.apache.struts.action.ActionMapping;
  8. public class LoginAction extends Action {
  9. @Override
  10. public ActionForward execute(ActionMapping mapping, ActionForm form,
  11. HttpServletRequest request, HttpServletResponse response)
  12. throws Exception {
  13. LoginActionForm laf = (LoginActionForm)form;
  14. String username = laf.getUsername();
  15. String password = laf.getPassword();
  16. UserManager userManager = new UserManager();
  17. try {
  18. userManager.login(username, password);
  19. return mapping.findForward("success");
  20. }catch(UserNotFoundException e) {
  21. e.printStackTrace();
  22. request.setAttribute("msg", "用户不能找到,用户名称=【" + username + "】");
  23. }catch(PasswordErrorException e) {
  24. e.printStackTrace();
  25. request.setAttribute("msg", "密码错误");
  26. }
  27. return mapping.findForward("error");
  28. }
  29. }

通过上面这个简单的小实例,大家可以清晰的看出,两个配置文件起到了一个很好的串联作用。也正是因为有配置文件,所以才是程序变得非常的灵活。这个小例子
比较简单,配置文件承担的责任不是很多,后面的东西会更多的用到配置文件,体会就会更加的深刻了。最后为大家附上源码方便一起研究讨论。

struts2——简单登陆实例的更多相关文章

  1. 【SSH高速进阶】——struts2简单的实例

    近期刚刚入门struts2.这里做一个简单的struts2实例来跟大家一起学习一下. 本例实现最简单的登陆,仅包括两个页面:login.jsp 用来输入username与password:succes ...

  2. Struts2+JQuery+Json登陆实例

    Struts2+JQuery+Json登陆实例 博客分类: Struts2   在搭建之前.. 首先,需要准备struts2.0框架的5个核心包, 以及jsonplugin-0.32.jar 以及js ...

  3. Struts2漏洞利用实例

    Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...

  4. c#三层架构登陆实例

    很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI, ...

  5. 原生Ajax用法——一个简单的实例

    Ajax全名(Asynchronous(异步) JavaScript and XML )是可以实现局部刷新的 在讲AJax之前我们先用简单的实例说一下同步和异步这个概念 /*异步的概念(就是当领导有一 ...

  6. [转]C#三层架构登陆实例

    很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI, ...

  7. SSH---整合Struts2&Spring&Hibernate(实例)

    一.SSH回顾 Struts2:核心为过滤器+拦截器.过程:Filter--->FilterDispatcher-->ActionMapper-->ActionProxy--> ...

  8. Spring MVC(二)--Spring MVC登陆实例

    本文通过一个简单的登陆实例实现Spring MVC的流程,同时整合 MyBatis使用,流程是这样的: 1.访问一个URL进入登陆界面 2.输入正确的用户名和密码,成功则进入index页面,否则留在登 ...

  9. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

随机推荐

  1. LRU Cache的简单c++实现

    什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...

  2. LoadRunner测试下载功能点脚本(方法二)

    在上一篇<LoadRunner下载功能点脚本(方法一)>中,实现的脚本仅是录制下载功能点的脚本,现在性能需求的场景更改如下: 性能需求:对系统某页面中,点击下载并将下载文件保存到本地电脑的 ...

  3. UIView设置少于四个的圆角

    最近的需求中有个label需要设置右下角为圆角,其余三个为直角,一开始用的是重写drawRect,然后用绘图重绘每个角的样子,计算起来还是麻烦 后来发现了下面的方法: UILabel *courseS ...

  4. Homebrew -- Mac软件管家(套件管理yun……)

    也许是之前使用linux系统的时候总是习惯使用wget 在mac中只有curl,有点略显不习惯 于是乎某天在搜索mac开发者的时候发现了Homebrew这个东西 ok,是那么句话--惰性是人的天性 有 ...

  5. Struts2 技术全总结 (正在更新)

    背景:Struts1是一个高度成熟的框架,运行效率高,但其致命缺陷在于与JSP/Servlet的耦合非常紧密,因而导致了一些严重问题.其次,Struts1与Servlet API的严重耦合,使应用难以 ...

  6. 虚函数—c++的灵魂

    <note_content />   虚函数 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数 ...

  7. 新花生壳+tomcat(内网映射,无需设置路由器)建站攻略

    说明: 1.适用于内网用户(局域网,校园网,或者公司网等无法更改路由器映射的情况) 2.一共花了8块钱…………心疼.不过如果大家有钱的话,8块钱,少吃一顿麻辣烫就好了~总之,这个适用于测试网站,小访问 ...

  8. jdk,j2ee,j2se,j2me的概念区别

    jdk,j2ee,j2se,j2me的概念区别1.JDK是Java development toolkit,相当于是Java的库函数,是编译,运行java程序的工具包.J2EE是Java 2 ente ...

  9. 分享到QQ空间、新浪微博、腾讯微博的代码!

    给网页加上分享代码,借助网友的力量推广网站,目前已经很流行了 以下是网页代码 QQ空间分享代码如下: <a href="javascript:void(0);" onclic ...

  10. 正式学习React(五) react-redux源码分析

    磨刀不误砍柴工,咱先把react-redux里的工具函数分析一下: 源码点这里  shallowEqual.js export default function shallowEqual(objA, ...