3.Struts2_搭建环境及实例

news/2024/7/16 6:51:32 标签: struts2.0

刚刚接触struts2,有点懵懵懂懂,还是习惯于先写代码,然后慢慢来理解其中的思想。
这篇文章主要内容是strusts的环境搭建及通过一个简单的例子来理解到底是怎么使用struts来简化编程的。

1.项目结构如下如,包括必须的包
这里写图片描述

2.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name> 

  <!-- 配置过滤器类 -->
  <filter>
        <filter-name>struts2</filter-name>
       <!--  从struts-2.1.3以后,org.apache.struts2.dispatcher.FileDispatcher值被标注为过时,现在是如下写法 -->
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <!-- 过滤器用来初始化struts2并处理所有web请求 -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3.struts.xml

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

<struts>
    <!-- struts基本配置内容 -->
    <!-- 
         package-name:用于区别不同的package;必须是唯一的、可用的变量名;用于其它package来继承;
         package-namespace:用于减少重复代码(和struts1比较);是调用action时输入路径的组成部分;
         package-extends:用于继承其它package以使用里面的过滤器等东东;
     -->
    <package name="struts" namespace="" extends="struts-default">
    <!-- 
         action-name:用于在一个package里区别不同的action;必须是唯一的、可用的变量名;是调用action时输入路径的组成部分;
         action-class:action所在的路径(包名+类名);
         action-method:action所调用的方法名; 默认执行execute,所以execute可以不写
    -->
         <action name="login" class="action.LoginAction" method="execute">
             <result name="success">/welcome.jsp</result>
             <result name="login">/login.html</result>
         </action>
         <action name="index" class="action.LoginAction" method="index">
             <result name="index">/login.html</result>
         </action>
    </package>

</struts>
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

4.LoginAction.java

package action;

import com.opensymphony.xwork2.ActionSupport;
//该类继承了ActionSupport类。这样就可以直接使用SUCCESS, LOGIN等变量和重写execute等方法
public class LoginAction extends ActionSupport {

    private String name;
    private String password;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    /**
     * 在这里返回值使用自定义的
     * @return
     */
    public String index(){
        return "index";
    }
    /**
     * 这里的返回值直接使用SUCCESS等变量
     */
    public String execute(){
        //会自动取出页面表单中的值
        if("sa".equals(name)&&"aaaaaa".equals(password))
            return SUCCESS;
        return LOGIN;
    }

}
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

6.login.html

<!DOCTYPE html>
<html>
  <head>
    <title>登录</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  </head>

  <body>
    <!-- action为login,提交时会根据路径在struts.xml找到与其匹配的action类 -->
    <form action="login" method="post">
                  登录名:<input type="text" name="name"/><br/>
                  密  码:<input type="password" name="password"/>
        <input type="submit" value="登录"/>
    </form>
  </body>
</html>
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

7.welcome.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>welcome</title>

  </head>

  <body>
    welcome!!! <br>
  </body>
</html>
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

启动tomcat后,在地址栏输入http://localhost:8080/struts2/index 即可打开login.html
输入sa和aaaaaa可打开welcome.jsp

(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $('
  • ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i

http://www.niftyadmin.cn/n/702490.html

相关文章

云数据库,谁才是领导者?

2021年新冠疫情进入第二年&#xff0c;对全球的社会、经济而言是不平凡之年&#xff0c;这句话也可用于概括云数据库的发展。随着中国厂商逐步进入全球云数据库市场重要舞台&#xff0c;我们也看到一名世界级的中国高手正式亮相。 2021年Gartner云数据库管理系统魔力象限公布后…

4.Struts2_详解hellostruts

第四节是在第三节搭配环境后做的小练习。 1.项目结构如下如&#xff0c;包括必须的包 &#xff08;导入struts2.jar包&#xff0c;导入到lib目录下&#xff09; 2..web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"htt…

3.1.struts.xml中package的namespace属性

struts.xml文件中package标签除了有name、extends属性外&#xff0c;还有一个十分重要的属性&#xff1a;namespace。如下&#xff1a; <struts> <package name”struts2” extends”struts-default” namespace”/abc”> <!– 用户登录Action –> …

每周全球科技十大看点(2022.1.10-1.16)

看点摘要&#xff1a; 美光科技发布了2022财年第一季度财报&#xff0c;营收同比增长33%谷歌不仅大力拓展公有云&#xff0c;同时重金100亿美元发展云安全2021年Gartner云数据库管理系统魔力象限公布&#xff0c;国内企业仅有两家入选法国CNIL宣布对谷歌和脸书处以1.5亿欧元和…

谁说硬件设备不赚钱了?2021全年光刻机巨头ASML营收净利巨增

【全球存储观察 | 科技明说】暴利依然暴利&#xff0c;光刻机巨头依然营收净利巨增。2021全年营收超千亿元&#xff0c;净利润超400亿元。谁说硬件不赚钱了&#xff1f;关键是做什么硬件&#xff0c;是做高精尖的极紫外光刻机&#xff0c;还是做薄利多销的PC台式机&#xff0c;…

5.Struts2_Action 概述

action VS Action 类 action: 代表一个 Struts2 的请求. Action 类: 能够处理 Struts2 请求的类. 1.属性的名字必须遵守与 JavaBeans 属性名相同的命名规则. 属性的类型可以是任意类型. 从字符串到非字符串(基本数据库类型)之间的数据转换可以自动发生2.必须有一个不带参的构…

收购艾瑞咨询,亚信科技如何释放1+1>2的发展效应?

任何企业的发展&#xff0c;成功的秘诀少不了战略坚持的定力&#xff0c;以及稳中求进的创新。 自2019年底亚信科技正式发布“一巩固、三发展”的整体战略后&#xff0c;便开启了业务转型的进程。在过去两年左右的时间里&#xff0c;稳固运营商市场BSS业务的同时&#xff0c;亚…

每周全球科技十大看点(2022.1.17-1.23)

看点摘要&#xff1a; 小米手机市场涨幅全球第一&#xff0c;我也想买一个暴利依然暴利&#xff0c;2021全年光刻机巨头ASML营收净利巨增AI视觉芯片公司爱芯元智宣布完成A轮8亿元人民币融资ACM(国际计算机学会)正式公布了2021年度ACM Fellow名单中国电子云推出自主打造的首款分…