Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点.Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性。下面我们了解一下syruts2的应用

1.1引入架包

1.2创建loginAction类

  1. package cn.happy.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.ServletActionContext;
  8. import org.apache.struts2.interceptor.SessionAware;
  9.  
  10. import com.opensymphony.xwork2.Action;
  11. import com.opensymphony.xwork2.ActionContext;
  12.  
  13. public class LoginAction implements Action,SessionAware{
  14. private Map<String,Object> map;
  15. private String username;
  16. private String password;
         //自动装配
  17. public String execute() throws Exception {
  18. if(username.equals("1")&&password.equals("1")){
  19. //解耦方式 (对Servlet Api进行封装 借助ActionContext)
  20. Map<String,Object> session=ActionContext.getContext().getSession();
  21. session.put("uname", username);
  22. //耦合方式
  23. // HttpSession session2 = ServletActionContext.getRequest().getSession();
  24. // session2.setAttribute("uname",getUsername());
  25. return SUCCESS;
  26. }else{
  27. return ERROR;
  28. }
  29. }
  30.  
  31. public String getUsername() {
  32. return username;
  33. }
  34.  
  35. public void setUsername(String username) {
  36. this.username = username;
  37. }
  38.  
  39. public String getPassword() {
  40. return password;
  41. }
  42.  
  43. public void setPassword(String password) {
  44. this.password = password;
  45. }
  46.  
  47. public void setSession(Map<String, Object> map) {
  48. this.map=map;
  49. }
  50.  
  51. }

1.3创建struts.xml文件

  1. '<?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5.  
  6. <struts>
  7.  
  8. <!-- 修改文件 tomact不用重启 -->
  9. <constant name="struts.devMode" value="true" />
  10.  
  11. <package name="default" namespace="/" extends="struts-default">
  12.  
  13. <!-- login action -->
  14. <action name="LoginAction" class="cn.happy.action.LoginAction">
  15. <result name="success">login/success.jsp</result>
  16. <result name="login">login/login.jsp</result>
  17. <result name="error">login/error.jsp</result>
  18. </action>
  19.  
  20. <!-- 第一个action -->
  21. <action name="HelloWordAction" class="cn.happy.action.HelloWordAction">
  22. <result name="success">index.jsp</result>
  23. </action>
  24.  
  25. </package>
  26.  
  27. </struts>

1.4配置web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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" version="2.5">
  3. <display-name></display-name>
  4. <filter>
  5. <filter-name>struts2</filter-name>
  6. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  7. </filter>
  8. <filter-mapping>
  9. <filter-name>struts2</filter-name>
  10. <url-pattern>/*</url-pattern>
  11. </filter-mapping>
  12. <welcome-file-list>
  13. <welcome-file>login/login.jsp</welcome-file>
  14. </welcome-file-list>
  15. </web-app>

1.5编写JSP页面

1.6在这里就展示一下登录页面与登录失败页面

login.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <%@taglib uri="/struts-tags" prefix="s" %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>登录页面</title>
  13.  
  14. </head>
  15.  
  16. <body>
  17. <s:form name="form1" namespace="/" method="post" action="LoginAction">
  18. 请输入用户名:
  19. <s:textfield name="username"></s:textfield><br/>
  20. 请输入密码:
  21. <s:textfield name="password"></s:textfield>
  22. <s:reset value="重填"></s:reset>
  23. <s:submit value="登陆"></s:submit>
  24. </s:form>
  25. </body>
  26. </html>

在jsp中用到了Struts2 标签

引入

  1. <%@taglib uri="/struts-tags" prefix="s" %>

通用标签(条件,迭代)

1.7 success.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'error.jsp' starting page</title>
  13.  
  14. </head>
  15.  
  16. <body>
  17. <h1>登录失败</h1>
  18.  
  19. <h3>用户名或密码错误,请重新<a href="login/login.jsp">登录</a></h3>
  20. <script>
  21. var t=10;//设定跳转的时间
  22. setInterval("refer()",1000); //启动1秒定时
  23. function refer(){
  24. if(t==0){
  25. location="http://localhost:8080/Day-login2-struts2/login/login.jsp"; //跳转的链接地址
  26. }
  27. document.getElementById('show').innerHTML=""+t+"秒后跳转到登录"; // 显示倒计时
  28. t--; // 计数器递减
  29. }
  30. </script>
  31. <span id="show"></span>
  32.  
  33. </body>
  34. </html>
  1.  

1.8结果展现

1.9登录成功   用户名:1 密码:1

1.10 登录失败     10秒后会跳会登录

2.0拓展

当我们用到的属性多的时候都写在loginAction类中就会感觉到特别的凌乱,这个时候我们就可以创建一个类来管理这些属性(例:user)

  1. package cn.happy.entity;
  2.  
  3. public class User {
  4. private String name;
  5. private int age;
  6.  
  7. public int getAge() {
  8. return age;
  9. }
  10. public void setAge(int age) {
  11. this.age = age;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19.  
  20. private String username;
  21. private String password;
  22. public String getUsername() {
  23. return username;
  24. }
  25. public String getPassword() {
  26. return password;
  27. }
  28. public void setUsername(String username) {
  29. this.username = username;
  30. }
  31. public void setPassword(String password) {
  32. this.password = password;
  33. }
  34.  
  35. }

这时候只在loginAction类中植入这个类就行了

  1. private User user;
  2. public User getUser() {
  3. return user;
  4. }
  5. public void setUser(User user) {
  6. this.user = user;
  7. }

这样代码就会显得更加的清晰,岁然这样做会让我们的眼前一亮,事物都有两面性有利就有弊。我们用到的属性名前面都要加上管理它们类的名称(如:user.getUsername)

  1. public class LoginAction implements Action,ModelDriven<User>{
  2.  
  3. @Override
  4. public String execute() throws Exception {
  5. if(user.getUsername().equals("1")&&(user.getPassword().equals("1"))){
  6. return SUCCESS;
  7. }else{
  8. //失败回到登录
  9. return LOGIN;
  10. }
  11. }
  12. private User user;
  13. public User getUser() {
  14. return user;
  15. }
  16. public void setUser(User user) {
  17. this.user = user;
  18. }
  19. @Override
  20. public User getModel() {
  21. // TODO Auto-generated method stub
  22. return user;
  23. }
  24. }

在1.2中我们可以看到加粗字体的语句解耦与耦合的应用(在下一篇博客中会有详细解释 解耦与耦合的你我他)

  1. //解耦方式
  2. Map<String,Object> session=ActionContext.getContext().getSession();
    session.put("uname", username);
  3. //耦合方式
  4. HttpSession session2 = ServletActionContext.getRequest().getSession();
  5.    session2.setAttribute("uname",getUsername());

  

首先我们先要在登录成功页面配置一道(success.jsp)

  1. <body>
  2. 欢迎你!${uname}
  3.  
  4. </body>

实现效果         用户名为1 

struts2案例的更多相关文章

  1. 三、第一个Struts2应用案例(编码步骤)

    第一个Struts2应用案例(编码步骤) 编写2个jsp hello.jsp <body>     <a href="${pageContext.request.conte ...

  2. java框架之struts2简介

    一.Struts2简介 1.Struts2概述                    Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. M:model-----数据 ...

  3. 粗浅看Struts2和Hibernate框架

    ----------------------------------------------------------------------------------------------[版权申明: ...

  4. 框架: Struts2 讲解 1

    一.框架概述 1.框架的意义与作用: 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 2 ...

  5. struts2从浅之深(一)简介

    一.Struts2简介 1.Struts2概述                    Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. M:model-----数据 ...

  6. 深入分析JavaWeb Item43 -- Struts2开发入门

    一.Struts2概述 1.Struts2是什么? Struts2是一个M(模型-域–范围模型)V(View视图)C(控制器)框架(模型2).框架都是一个半成品. 提高开发效率. Struts1是一个 ...

  7. Java Struts2 (一)

    一.Struts2简介 1.Struts2概述 Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. 2.Struts2的来历 Struts1:也是apache开发的一 ...

  8. Struts2简介以及结果集转发

    一.分析之前的项目的不足,编写属于自己的框架二.Struts2简介(面试)三.搭建Struts2的开发环境 1.找到所需的jar包:发行包的lib目录中(不同版本需要的最小jar包是不同的,参见不同版 ...

  9. struts2学习笔记一

    一.框架概述 1.框架的意义与作用: 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 2 ...

随机推荐

  1. NIOS II 中直接调用Modelsim仿真

    STEP1:创建一个工程,实现并编译该工程,编写TestBench文件. STEP2:设置启动Modelsim的路径 选择Nios II菜单Tools->Options..,在弹出的界面中,选择 ...

  2. linux下 nginx、php-fpm、mysql 开机自启动

    1.分别为每个编写shell脚本放入/etc/init.d下,添加service服务 2.把每个service服务加入到chkconfig列表 这里我们以php-fpm为例说明下步骤: php-fpm ...

  3. PHP流程控制结构之分支结构

    流程控制对于任何一门编程语言来说都是具有通用与普遍性的,是程序的重要组成部分.可以这么说,在任何一门程序设计语言中,都需要支持三种基本结构:顺序结构.分支结构(选择结构或条件结构)和循环结构.对于顺序 ...

  4. 【Apache大系】Apache服务器面面观

    Apache 2.2 中文官方文档 1. 先看看百度百科对Apache的解释: apache(Web服务器)_百度百科 2. apache服务器本质上说是一个TCP socket服务,socket模型 ...

  5. Meta标签详解(HTML JAVASCRIPT)

    Meta标签详解,在网上转的,希望对大家有用 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广 个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中 ...

  6. jQuery刮彩票兑奖效果

    效果体验:http://keleyi.com/a/bjad/uaq24pxt.htm 其中拖拽刮涂层效果使用jquery UI的draggable方法,请参考:http://keleyi.com/a/ ...

  7. iOS Version 和 Build 版本号

    Version 和 Build 版本号 开发者都知道,无论是对于 iOS 和 Android 的应用,每个应用都有两个不同的版本号.分别是: Version Build(在 Android 上叫 Ve ...

  8. asp.netDataTable导出excel方法(1)

    先来写一段代码,这段代码也是我在网上找的,但是他那个原先有点问题,我对他那个进行了修改,现在这个代码是我修改改过的,应该没有问题的. public int StreamExport(System.Da ...

  9. Hadoop学习2

    搭建伪分布式完成之后: 伪分布式安装详细介绍:http://www.powerxing.com/install-hadoop/ 练习1 编写Java程序实现以下函数: 1.向HDFS中上传文件 2.从 ...

  10. Git 技能总结

    创建和使用git ssh key 首先设置git的user name和email: git config --global user.name "xxx" git config - ...