本次复习第一个项目,运用Struts完成个简单的登陆界面,温故知新。

  首先建立项目,配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7
 8      <filter>
 9         <filter-name>struts2</filter-name>
10         <filter-class>
11             org.apache.struts2.dispatcher.FilterDispatcher
12         </filter-class>
13     </filter>
14
15      <filter-mapping>
16         <filter-name>struts2</filter-name>
17         <url-pattern>/*</url-pattern>
18     </filter-mapping>
19
20
21 </web-app>

这是Struts2的配置,与1.0有区别。

login.jsp页面很简单,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'login.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="login.action" method="post">username:<input type="text" name="username"><br>password:<input type="password" name="password"><br><input type="submit" value="submit"></form></body>
</html>

  Struts.xml文件建立在src目录里面,然后myeclipse自动放在tomcat的classes文件夹中。如果忘记配置,那么可以在下载的帮助文档中,在app文件夹下找到一个项目,然后找到Struts.xml的头文件,然后复制就好了,不用记住。头文件配置为:
  

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4     "http://struts.apache.org/dtds/struts-2.0.dtd">

  然后建立一个包,com.test.action包,然后建立个LoginAction.java文件。
  用过1.0开发过的人一定会理解,ActionForm是争议最大的。所以在2.0以上中取消了。只有一个Action,登录界面中的LoginAction.java文件代码为:

 1 package com.test.action;
 2
 3 import java.util.Map;
 4
 5 import com.opensymphony.xwork2.ActionContext;
 6 import com.opensymphony.xwork2.ActionSupport;
 7
 8 public class LoginAction extends ActionSupport
 9 {
10     private String username;
11     private String password;
12
13     public String getUsername()
14     {
15         return username;
16     }
17
18     public void setUsername(String username)
19     {
20         this.username = username;
21     }
22
23     public String getPassword()
24     {
25         return password;
26     }
27
28     public void setPassword(String password)
29     {
30         this.password = password;
31     }
32
33     @SuppressWarnings("unchecked")
34     public String execute() throws Exception
35     {
36         if ("hello".equals(this.getUsername().trim())
37                 && "world".equals(this.getPassword().trim()))
38         {
39             Map map = ActionContext.getContext().getSession();
40
41             map.put("user","valid");
42
43             return "success";
44         }
45         else
46         {
47             this.addFieldError("username", "username or password error");
48             return "failer";
49         }
50
51     }
52
53     @Override
54     public void validate()
55     {
56         if (null == this.getUsername() || "".equals(this.getUsername().trim()))
57         {
58             this.addFieldError("username", "username required");
59         }
60         if (null == this.getPassword() || "".equals(this.getPassword().trim()))
61         {
62             this.addFieldError("password", "password required");
63         }
64     }
65
66 }

 看到这个程序,我们发现,他不依赖任何的类,没有Form等等,需要注意的是:如果客户端定义个username,那么Struts会自动去找Action中的getUserName,然后进行一系列操作,找的是getUserName,并不是private中的属性username,而是根据方法来执行。

  然后新建个jsp页面,用来显示结果代码也很简单:

  

 1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
 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 'result.jsp' starting page</title>
13
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22
23   </head>
24
25   <body>
26
27     username:<%= request.getParameter("username") %><br>
28     password:<%= request.getParameter("password") %>
29
30   </body>
31 </html>

  现在我们配置Struts.xml文件:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5
 6 <struts>
 7
 8     <package name="struts2" extends="struts-default">
 9
10         <action name="login" class="com.test.action.LoginAction">
11             <result name="success">/result.jsp</result>
12
13         </action>
14
15     </package>
16
17 </struts>

熟悉Struts1.0的可能知道,这里面的class属性相当于1.0中的type属性。其中的name属性"login",对应login.jsp中的action="login.action",Struts遇到login.action会自动进行Action处理,并且将login直接传到Struts.xml中的login,自动调用com.test.action.LoginAction生成对象,这样就转移到了LoginAction.java文件,这里需要注意的是,执行LoginAction时,会自动执行execute方法,返回success(struts中的默认值)。然后到Struts.xml中的success,对应的/result.jsp页面显示。这样我们就配置好了Struts.xml

完成后运行就可以了。

转载于:https://www.cnblogs.com/liushengjie/archive/2012/05/02/2479571.html

Struts2回顾复习02相关推荐

  1. mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数

    mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...

  2. Struts2 回顾总结

    1.第一个Struts2入门案例 1.找jar包 Struts2-core xwork-core ognl javasist freemarker commons-lang commons-io co ...

  3. 复习02统计学习方法(感知机perceptron machine)---图片版

  4. [Java复习02] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

  5. Android复习02(ListView具体操作[很详细]、简单音乐播放器)

    2020年 3月24日 星期二 Android录播回放 笔记[腾讯课堂] https://ke.qq.com/webcourse/index.html#cid=989760&term_id=1 ...

  6. 现代制造工程-考试复习02

    1.说明:标有重点的是会出简答题或者计算题,而未标注的则是会出选择题和填空题 2.题型:判断.选择.简答.论述

  7. java数据结构期末复习_java数据结构复习02

    1.递归问题 1.1计算阶乘 packageinterview.recursion;importjava.util.Scanner;public classFact {public static vo ...

  8. struts2.1笔记02:servlet简介

    1. Servlet 是在服务器上运行的小程序.这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用 ...

  9. python课程回顾复习记录简要6

    封装 封装指的是隐藏对象的属性和实现细节,仅对外提供一个公共的访问方式 好处: (1)封装能分开类的属性,并将类的属性分成私有属性和公共属性,而私有属性仅供类本身调用使用(只能在 本类来访问),公共属 ...

  10. 高等流体力学复习02

    流体变形包括哪几种?变形(线变形/角变形).平移.旋转 一 连续性方程 1.取控制体(任意) 2.质量守恒定律 3.高斯公式-将面积分转化为体积分(一个函数的面积分等于其散度的体积分) 4.积分定理- ...

最新文章

  1. 电脑耳机声音小怎么调大_录自媒体vlog视频声音小怎么办,看兰哥怎样不花钱就解决...
  2. VM虚拟机常见问题之五--网络相关的问题
  3. CmRegisterCallback监控注册表框架
  4. Codeforces Round #696
  5. 理解metrics.classification_report
  6. shell脚本if语句判断
  7. Flash与组件:制作Slider组件
  8. 在线的代码托管平台 coding.net ===中国扩展版github
  9. 三菱melsec-a系列plc的指令与编程_三菱Q系列PLC定时器、计数器结构化编程基础
  10. 流程图神器——代码转流程图软件、在线流程图绘制软件
  11. Win10加装SSD固态硬盘后卡顿现象的解决方法
  12. 单片机温度传感器c语言编码,单片机中使用DS18B20温度传感器C语言程序.doc
  13. 转: Github上关于iOS的各种开源项目集合
  14. 胡适致迷茫大学生:成不在一时,功必不唐捐
  15. 架构师进阶之路,JAVA架构师面试题
  16. VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令
  17. context 简介
  18. C语言数据结构学生成绩 顺序表
  19. Python实现倒计时程序
  20. 如何在工作中保持专注力

热门文章

  1. 扔掉JUnit,迎接Spock
  2. 经典实用数据库新书推荐-关于mysql和oracle【转孟光】
  3. 如何保证缓存与数据库双写时的数据一致性?
  4. B站,又被扫黄了!!!
  5. 最强IM软件微信陌陌架构怎么实现,25页ppt解读
  6. 全面了解Nginx主要应用场景
  7. 腾讯云分布式高可靠消息队列CMQ架构最佳实践
  8. Google 投资 Lyft 背后、AlphaGo Zero 人工智能威胁论?
  9. java jdbc close原理_Java开发笔记(一百四十六)JDBC的应用原理
  10. dump文件_windows程序崩溃时生成dump文件方法