1.

首先是Struct2使用的jar包,可以在官网下载https://struts.apache.org/   ,其中包只要下面这些就够用了。

或者点击下面链接下载

链接:https://pan.baidu.com/s/19vH_6FElQSzbLu3VqcGmSA
提取码:jybj

2.配置文件,在WEB-INF文件下的web.xml文件中添加内容

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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.3.dtd">
<struts> <package name="default" namespace="/" extends="struts-default">
<action name="delete" class="action.Deleteaction">
<result>/index.jsp</result>
</action>
<action name="add" class="action.Addaction">
<result>/index.jsp</result>
</action>
<action name="updata" class="action.Updataction">
<result>/index.jsp</result>
</action>
</package>
</struts>

其中的action的作用:

  1.name属性为请求地址,即当请求地址为name的属性时会到这里。

  2.class 为请求的方法所在的类,该类需要继承 ActionSupport,后面还会说。

  3.method 属性(可选),当请求时,默认执行的是class中 execute 方法,如果添加了method属性,将访问method属性下的方法。

  4.result属性,即为当方法返回成功之后,要返回的界面

4.以增加为例

Addaction,其中主要的业务代码都需要写在execute中,如果在xml文件中action没有配置method属性即执行该方法,配置其他方法就会执行对应的方法。返回为SUCCESS,就会跳转到对应的result页面。

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import Bean.StudentDao;
import Model.Student; public class Addaction extends ActionSupport {
private static final long serialVersionUID = 1L;
private HttpServletRequest request = ServletActionContext.getRequest();
private HttpServletResponse response = ServletActionContext.getResponse(); @Override
public String execute() throws Exception {
System.out.println("add");
request.setCharacterEncoding("UTF-8");
String xuehao=request.getParameter("xuehao");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String shengri=request.getParameter("shengri");
String zhuzhi=request.getParameter("zhuzhi");
Student student=new Student();
student.setName(name);
student.setSex(sex);
student.setShengri(shengri);
student.setXuehao(xuehao);
student.setZhuzhi(zhuzhi);
StudentDao studentDao=new StudentDao();
try{
studentDao.add(student);
request.setAttribute("success", "添加成功");
}catch(Exception e){
request.setAttribute("error123", "用户名存在");
}
//request.getRequestDispatcher("addinput.jsp").forward(request, response); return SUCCESS;
} }

5.在请求地址上,为add.action

6.在运行时可能会报错在我操作过程中主要遇到的有两种问题

  1.web.xml没有配置

  2.缺少jar包

  3.structs.xml配置错误,如果class下的文件不存在启动会报错,classNotfound,运行的页面都为404

  

程序运行界面:

注意请求地址

Struct2的简单的CRUD配置和使用的更多相关文章

  1. Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD

    源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...

  2. spring集成mongodb封装的简单的CRUD

    1.什么是mongodb         MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB是一个介 ...

  3. Mybatis 系列7-结合源码解析核心CRUD 配置及用法

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

  4. ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

    前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...

  5. Mybatis实现简单的CRUD(增删改查)原理及实例分析

    Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...

  6. 一个简单的零配置命令行HTTP服务器

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  7. 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  8. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

  9. 简单几步配置gitlab

    简单几步配置gitlab 之前配置gitlab需要很多步骤,要装apache2.ruby.tomcat.mysql等一片东西.有没有更简单的方式呢?现在可以借助bitnami,简化了很多. 可以参考v ...

随机推荐

  1. pramfs安装

    1. 拷贝 linux-3.11 pramfs-1.5.0-3.11 pramfs-Tools 到电脑中(我是新建目录linux中) 2.解压 3.cd pramfs-1.5.0-3.11/ 4.将p ...

  2. visio给任意图形进行填充

    使用visio给图形填充颜色的条件:图形必须是封闭的!!! 但是很多人不明白:我明明画的图形是封闭的啊!可是无法填充颜色!这是因为,你画了一个看上去是封闭的图形,但是VISIO认为你画的不是封闭图形! ...

  3. [Nowcoder212D]禁书目录_概率期望

    禁书目录 题目大意:清教需要定期给Index清除记忆,在此之前需要把当中的十万三千本禁书取出来......不幸的是,禁书一旦离开了Index就非常脆弱,具体来说,每一本禁书都有一个魔力值 ai ,其记 ...

  4. 【Python】【demo实验32】【回文数的确认】

    原题: 我的代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- #判断一个数字是否为回文数 即 12345654321 x = ...

  5. 易混乱javascript知识点简要记录

    一.== vs === ==在做判断时,如果对比双方的类型不一样的话,就会进行类型转换 假如我们需要对比 x 和 y 是否相同,就会进行如下判断流程: 首先会判断两者类型是否相同.相同的话就是比大小了 ...

  6. Vue学习之vue-cli脚手架下载安装及配置

    Vue学习之vue-cli脚手架下载安装及配置:https://www.cnblogs.com/clschao/articles/10650862.html 1. 先下载node.js,下载地址:ht ...

  7. spring-boot 连接数据库(六)

    环境 jdk 6 tomcat 6.0.53 sts 4.4.2 maven 3.2.5 mysql 5.7 准备 接下来的数据库操作基于 mysql,所以需要一套可用的 mysql 环境. 引入 j ...

  8. Netty的那些”锁”事

    Netty锁事的五个关键点: ① 在意锁的对象和范围  --> 减少粒度 ②  注意锁的对象本身大小   --> 减少空间占用 ③ 注意锁的速度 --> 提高速度 ④不同场景选择不同 ...

  9. Thinkphp5 自定义上传文件名

    这几天在做tp5的上传文件模块,项目需求是要把文件名在上传之后修改为 用户名+原文件名的组合形式,在网上找了一会儿发现好像没有类似的文章...只好自己去研究研究了. 之前查看过看云上面的官方手册,文件 ...

  10. Thrift Oneway是什么?

    网上很多文章,都有各种涉及使用 oneway 的,基本是一个THRIFT IDL示例接口前面加 oneway.看完之后对 oneway的理解还是很模糊,于是看了下Thrift的代码,终于搞懂了 one ...