Eclipse搭建struts2框架

news2024/11/18 15:30:12

新建动态web项目;

输入项目名称;

 

New Runtime后选择如下,

 

选择tomcat的安装目录;

 

然后如下,完成;

 

当前的目录结构如下;之前要配置好java环境;

 

如果创建项目时没有选中生成web.xml,右击项目文件夹,选择如下菜单,生成web.xml;

 

把struts2的包拷贝到lib文件夹下,然后刷新一下,会显示出来;

 

选中所有的包,右击,选择如下菜单,把包加入项目;

 

在src文件夹下创建struts.xml,

 

struts.xml,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<!-- START SNIPPET: xworkSample -->
<struts>
   <!-- 是否开启动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="default" namespace="/" extends="struts-default">
         <action name="login" class="com.example.struts2.LoginAction" method="login">
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

右击src文件夹,创建新的包, 

 

输入包名,

 

Finish之后如下,

 

右击新创建的包,创建新的类,

 

输入类名;

 

package com.example.struts2;

import javax.servlet.http.HttpServletRequest; 
import org.apache.struts2.ServletActionContext;
  
public class LoginAction {
     
    HttpServletRequest req = ServletActionContext.getRequest();
    String username = req.getParameter("username");
    String password = req.getParameter("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;
    }  
 
    public String login(){
        if("xiaoBaby".equals(username)
                && "123456".equals(password)){
            return "result";
        }else{
            return "error";
        }
    }
     
}

然后再创建3个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>Insert title here</title>
</head>
<body>  
    <form action="login.action" method="post">  
        用户名:<input type="text" name="username">  
        密码:<input type="text" name="password">  
        <input type="submit" value="提交">  
    </form>  
</body>
</html>

success.jsp和error.jsp简单化,在<body></body>之间添加一个字符串即可; 

 此时项目结构如下,

 

还有web.xml代码;

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>sts</display-name>
  
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

然后右击项目文件夹,选择如下菜单,

 

出现如下对话框,Finish;

 

index.jsp不会出来,查看控制台输出,包含一个错误,

    java.lang.ClassNotFoundException: .apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,

我想把web.xml中的

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

改为

    <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>

然后再重新运行,又出现下图错误;有时间继续;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能学习1

文章目录 人工智能人工智能的诞生人工智能的发展历程人工智能与机器学习的关系 机器学习机器学习的发展历程讨论机器学习的必要性机器学习的定义机器学习的三要素机器学习的基本概念作业 人工智能 人工智能的诞生 人工智能诞生于一群科学家想使用机器模拟人类思维或者人类智能…

黑马JVM总结(十二)

&#xff08;1&#xff09;五种引用_强软弱 实线箭头表示强引用&#xff0c;虚心线表示软弱虚终结器引用 在平时我们用的引用&#xff0c;基本都为强引用 &#xff0c;比如说创建一个对象通过运算符赋值给了一个变量&#xff0c;那么这个变量呢就强引用了刚刚的对象 强引用的…

Linux 磁盘挂载 磁盘卸载

挂载&#xff1a; 虚拟机中本来是没有光盘&#xff0c;但是有复刻的镜像文件&#xff0c;不影响我们挂载&#xff0c;当我们将镜像设备挂载到固定的目录下后&#xff0c;我们就可以通过访问目录&#xff0c;来查看镜像文件中的内容。 1. 创建挂载点&#xff1a; 一般虚拟设备上…

Java进化史:从Java 8到Java 17的语言特性全解析

文章目录 Java 8&#xff1a;引入Lambda表达式和Stream APILambda表达式Stream API Java 9&#xff1a;模块化系统模块Jigsaw项目 Java 10&#xff1a;局部变量类型推断Java 11&#xff1a;引入HTTP客户端HTTP客户端 Java 12&#xff1a;引入Switch表达式Switch表达式 Java 13到…

为什么学鸿蒙HarmonyOS——兴趣使然,HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统

为什么学鸿蒙HarmonyOS 为什么学鸿蒙的诞生鸿蒙的未来鸿蒙OS典型案例鸿蒙是分布式操作系统总结参考学习资料 为什么学 兴趣使然&#xff0c;了解了一下鸿蒙系统的历史&#xff0c;是AIOT系统&#xff0c;是中国的未来的核心系统 鸿蒙&#xff1a;HarmonyOS是一款面向万物互联时…

antd a-list 添加分页

会分为三部分 template <a-list item-layout"horizontal" :data-source"localData" :pagination"{...paginationProps,current:currentPage}"><a-list-item slot"renderItem" slot-scope"item"><a-list-ite…

伪原创工具-好用的伪原创软件有哪些特征

在这个信息爆炸的时代&#xff0c;我们每天都要处理大量的文字信息&#xff0c;不管是在学校里写作业&#xff0c;还是在工作中处理文件。有时候&#xff0c;为了节省时间和精力&#xff0c;我们会考虑使用一些文章伪原创工具。 什么是文章伪原创&#xff1f; 让我们来明确一…

Netty(二)NIO-入门

Netty 入门 1. 概述 1.1 Netty Netty是一个异步的&#xff0c;基于事件驱动的网络应用框架&#xff0c;用于快速开发可维护&#xff0c;高性能的网络服务器和客户端 Cassandra&#xff0c;Spark&#xff0c;Hadoop&#xff0c;RocketMQ&#xff0c;ElasticSearch&#xff0c…

【小沐学写作】程序员必备技能:在线协作文档汇总

文章目录 1、简介2、微软Office在线文档2.1 功能简介2.2 使用费用2.3 用户体验 3、石墨文档3.1 功能简介3.2 使用费用 4、腾讯文档4.1 功能简介4.2 使用费用 5、语雀5.1 功能简介5.2 使用费用 6、飞书6.1 功能简介6.2 使用费用 7、印象笔记7.1 功能简介7.2 使用费用 结语 1、简…

解决xinput1_3.dll丢失的终极方法!快来尝试这4个方法吧!

在计算机系统中&#xff0c;DLL&#xff08;动态链接库&#xff09;是一个重要的组成部分&#xff0c;它们负责在程序和操作系统之间共享代码和数据。然而&#xff0c;当xinput1_3.dll丢失时&#xff0c;可能会导致一系列的问题&#xff0c;如系统运行缓慢、应用程序无法启动等…

当下最好不要碰PCIe 5.0 SSD

为了追求高性能&#xff0c;现在说到SSD&#xff0c;大家基本都想要买NVME PCIE SSD。PCIE SSD在消费端、云市场、数据中心的占比均在继续攀升。 截至目前&#xff0c;虽然PCIe 5.0已经发布已经过去4年&#xff0c;但是整个生态并没有很繁荣。当前主流市场还是PCIe 3.0和PCIe 4…

【算法】二分答案(TODO)

文章目录 相关链接什么时候使用二分答案&#xff1f;题目列表最大化最小化相关题目列表&#x1f4d5;2439. 最小化数组中的最大值解法1——二分答案解法2——分类讨论O(n) 2513. 最小化两个数组中的最大值&#xff08;二分答案lcm容斥原理&#xff09;&#x1f402;好题&#x…

VS code 下 makefile 【缺少分隔符 停下来】 报错解决方法

首先来看报错的makefile源码 再来看报错的信息&#xff1a; 第5行缺少分隔符&#xff0c;其实不止是第5行&#xff0c;只要是前面需要加tab留白的行都会报这个错误&#xff0c;比如说第7行第11行 编译的时候&#xff0c;前面的留白必须是按tab键生成的 但是&#xff01;&…

成为一个优秀的程序员必读书目有哪些?

首推一本刚刚出版的新书&#xff1a; 程序员的制胜技 新手程序员的生存指南&#xff0c;教你如何将理论转化为实践技能&#xff0c;解决编程工作中的挑战&#xff0c;拥有实战智慧&#xff0c;成为开发高手&#xff01; 作者20多年实战经验的结晶&#xff0c;新手程序员的生存…

从HTTP到HTTPS:网站安全通信的演进之路

HTTP协议与TCP/IP协议族内的其他协议相同部分&#xff0c;用于客户端和服务器端的通信。下面来看一下HTTP具体是怎么工作的。 1、HTTP前生今世 在HHTP/0.9版本&#xff0c;主要是通过确立了客户端请求、服务器端响应的通信流程来解决HTML文件传输&#xff0c;只能获取文本资源…

xen-trap

Xen-Trap xen的虚拟化实现有一个很重要的机制就是tarp&#xff0c;中文可以暂且叫做陷入。在ARMv8中&#xff0c;trap就是异常等级的一个切换。 当发生trap的时候&#xff0c;就会进入设定好的异常向量表中&#xff0c;硬件自动判断属于哪种类型的异常。 一、异常处理 ARM…

天然气跟踪监管系统信息更新

天然气跟踪监管系统信息更新 ① 新增仓库&#xff0c;第一步&#xff0c;“编辑仓库”对话框新增栏第二步&#xff0c;提交jQuery序列化新增仓库的form表单第三步&#xff0c;新增仓库成功第一步&#xff0c;创建编辑对象第二步&#xff0c;获取仓库修改后的几何图形及面积数据…

学习计算机网络中的一些疑问及解答

文章目录 前言一、为什么要进行三次握手二、三次握手的流程三、三次握手中seq和ack的值四、四次挥手流程五、四次挥手中seq和ack的值六、为什么要等待才回复七、为什么等待2MSL总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;在学习计算机网络的过程中遇…

CLR via C#(三)垃圾回收

一、资源生命周期 每个程序运行都需要各种资源&#xff0c;如文件、内存缓冲区、数据库等。要使用这些资源&#xff0c;就必须为代表资源的类型分配内存。访问一个资源所需的步骤如下&#xff1a; 调用IL指令newobj&#xff0c;为代表资源的类型分配内存&#xff08;在C#中一…

NSS [HNCTF 2022 WEEK2]ohmywordpress(CVE-2022-0760)

NSS [HNCTF 2022 WEEK2]ohmywordpress&#xff08;CVE-2022-0760&#xff09; 题目描述&#xff1a;flag在数据库里面。 开题&#xff1a; 顺着按钮一直点下去会发现出现一个按钮叫安装WordPress 安装完之后的界面&#xff0c;有一个搜索框。 F12看看network。 又出现了这个…