day27_struts2环境搭建&配置文件

AI编程落地三件套:Claude Code、MiniMax 2.7与Superpowers工程化实践 AI编程不是替代开发者,而是增强工程确定性。本文围绕代码生成、架构决策与自动化执行三大核心能力展开,解析如何通过上下文感知的代码补全(如Claude Code)、结构化JSON输出的长文本推理(如MiniMax 2.7)以及IDE原生集成的流程编排(如Superpowers),构建可审计、可回滚、可度量的AI增强型开发流水线。技术价值在于将大模型的概率性输出,转化为符合SonarQube规则、GitOps规范和CI/CD约束的确定性动作;典型应用于多租户SaaS、金融级风控与高并发供应链系统等强合规、重稳定 阅读详情

一、学习方法:

做好笔记。Struts2内容比较多,比较杂。
多做实验,证明结论。

二、Servlet PK Filter

Servlet:

void init(ServletConfig cfg);//初始化,读取Servlet的配置参数
void service(ServletRequest request,ServletResponse response);服务方法,用户的每次请求都会执行
void destory();//销毁方法

单例的

Filter:

void init(FilterConfig cfg);//初始化,读取Filter的配置参数
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain);过滤方法,用户每次访问被过滤的资源,都会执行
void destory();//销毁方法

单例的

总结:过滤器比Servlet强大,它能够绝地是否让目标执行。

实际开发:Servlet在MVC开发模型中作为控制器存在,那么Filter也可以作为控制器。

三、Struts2简介

1、SUN推出的开发模型:

模型1:JSP+JavaBean
模型2:MVC

2、Struts2是基于MVC开发模型的一个框架,属于表现层框架。(蓝色区域)

这里写图片描述

3、分析之前的案例

这里写图片描述

框架都是半成品,程序员在此基础上开发实现自己业务功能的代码。框架是把程序员从繁琐的重复性的代码中解脱出来,提交开发效率。

这里写图片描述

4、Struts2的小历史
Struts2:Struts+WebWork框架
Struts1:2003左右很火。

四、搭建开发环境
1、下载Struts2的发行包。
http://struts.apache.org

2、新建一个JavaWeb工程,拷贝一下jar包到lib目录中
这里写图片描述
小技巧:从Struts2发行包apps\struts2-blank\WEB-INF\lib,把其中jar都拷贝过来即可。
3、在构建路径的顶端,创建一个配置文件struts.xml
这里写图片描述
4、配置控制器映射:框架提供
这里写图片描述

5、验证:
部署到Tomcat中,启动,如果没有错,成功
五、第一个Struts2案例
1、Struts2的基本执行原理
这里写图片描述
2、第一个案例的开发过程
a、发出请求给框架
这里写图片描述
b、修改struts.xml配置文件
这里写图片描述
c、编写动作类和动作方法
这里写图片描述
d、编写success.jsp或error.jsp页面
e、启动访问即可
六、编写Struts.xml配置文件没有提示
a、联网
b、没有联网:手工配置一下
这里写图片描述
七、Struts2的执行过程:非常全面的图
这里写图片描述
八、Struts2的配置文件
1、Struts2框架会按照以下顺序加载配置文件
a、default.properties:struts2-core**.jar org.apache.struts包中(程序员只能看)
b、struts-default.xml:struts2-core**.jar中(程序员只能看)
c、struts-plugin.xml:在插件的jar包中(程序员只能看)
d、struts.xml:在应用的构建路径顶端。自己定义的Struts配置文件(推荐)
e、struts.properties:在应用的构建路径顶端。程序员可以编写(不推荐)
f、web.xml:配置过滤器时,指定参数。程序员可以编写(不推荐)
特别注意:顺序是固定的。后面的配置会覆盖前面的同名配置信息。

2、代码验证
Struts2的默认请求路径是.action,改为.do

此处的默认配置在default.properties中。
这里写图片描述

struts.xml覆盖:
这里写图片描述

struts.properties覆盖:
这里写图片描述
web.xml覆盖:
这里写图片描述
2、更改Struts2默认的参数

这里写图片描述
这里写图片描述这里写图片描述
3、package元素:(相当于java中的包)
意义:分模块开发。
属性:
name:必须的。配置文件中要唯一。就是一个名字。
extends:指定父包。会把父包中的配置内容继承下来。一般需要直接或间接的继承一个叫做“struts-default”的包(在struts-default.xml配置文件中)。如果不继承该包,那么Struts2中的核心功能将无法使用。
abstract:是否是抽象包。没有任何action子元素的package可以声明为抽象包。
namespace:指定名称空间。一般以”/”开头。该包中的动作访问路径:namesapce+动作名称。如果namespace=””,这是默认名称空间,和不写该属性是一样的。

4、action元素:
作用:定义一个动作。
属性:
name:必须的。动作名称。用户用于发起请求。在包中要唯一。
class:指定动作类的全名。框架会通过反射机制实例化。默认是:com.opensymphony.xwork2.ActionSupport。
method:指定动作类中的动作方法。框架会执行该方法。默认是execute()。

关于默认类:在struts-default.xml中进行了声明
这里写图片描述
可以在自己的配置文件中覆盖它。
这里写图片描述
九、动作类:
1、编写动作类的三种方式:
POJO(Plain Old Java Object)普通的JavaBean。
这里写图片描述
b、实现com.opensymphony.xwork2.Action接口
这里写图片描述
Action接口中的常量:
String SUCCESS:success。一切正常。
String NONE:none。动作方法执行后,不转向任何的结果视图。或者在动作方法中返回null。
String ERROR:error。动作方法执行时遇到异常,转向错误提示页面。
String INPUT:input。验证、转换失败,转向输入页面。
String LOGIN:login。检测用户是否登录,没有登录转向此视图。

c、继承com.opensymphony.xwork2.ActionSupport(推荐)
意义:提供了一些基本的功能。比如验证和国际化消息提示等。
这里写图片描述
2、动作类中的动作方法
编写要求:public String XXX(){}
3、动作通配符映射
这里写图片描述
这里写图片描述
细节:
存在多个匹配的情况:
绝对匹配—–>按照通配符匹配的配置顺序为准。
4、动态方法调用:DMI(Dynamic Method Invocation)
这里写图片描述
在访问时指定执行的动作方法:
http://localhost:8080/XXX/demo4!m1 执行demo4动作对应动作类的m1动作方法

默认情况下:会报错,说找不到demo4!m1这个动作方法。因为struts2框架默认是禁止动态方法调用的。
这里写图片描述
注意:不建议使用。容易暴露动作类中的动作方法,害怕非法执行。

十、动作类中获取ServletAPI
方式一:推荐。简单
这里写图片描述
方式二:麻烦。
这里写图片描述
原因:
拦截器(servletConfig)给你注入的这些实例。

JetBrains AI IDE AIR:面向AI协作的原生开发操作系统 AI IDE 不再是传统IDE的插件增强,而是以AI为第一公民重构的开发操作系统。其核心在于将自然语言任务自动拆解为多代理协同执行流,依托本地轻量模型(如CodeSight-7B)、动态代码图谱(CodeGraph)与权限可控的沙箱运行时,实现跨文件、跨模块、带验证闭环的工程级重构。相比Copilot等补全工具,AIR真正解决的是‘需求理解—任务编排—安全执行—结果验证’全链路断裂问题,尤其适合技术决策、遗留系统治理与工程能力培养等高价值场景。 阅读详情

相关推荐

基于STM32L4XX 、HAL库的TMC2209-LA-T步进电机驱动器驱动程序应用设计

/ R/W=0 表示写。uint32_t gconf_value = (0 << 0) // I_scale_analog: 禁用,使用UART控制电流。uint32_t ihold_irun = (8 << 0) // 保持电流 8/31 最大值。

PP_Cottage的博客 425

strus2部署与常用方法总结

1.       将以下struts2的核心jar包引入到web工程的lib中:   若是要用到struts的注解,需要配置如下jar包:    2.       配置web.xml,本例中用的是tomcat7.0&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;web-app version=&quot;3.0&quot; xmlns=&quot;http:...

yuankai08021的博客 262

virtuoso如何导出def?

在DEF Out界面,填写def name,library name以及cell name ,cell view既layout,把Output "Floating Shapes" into SPECIAL NETS Section勾上,OK即可。2)在要导出的layout界面选中PAD和prBoundary(shift+左键),快捷键C copy到空cell里,这时需要调整copy过来的object坐标,让两边prBoundary的坐标相同。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 2255

修改struts的访问后缀

第一种方式: 在struts.xml的配置文件中添加 &lt;constant name="struts.action.extension" value="do"&gt;&lt;/constant&gt; name是从default.properties中找到的 这里面的action,,代表输入的访问路径后缀可以是.action也可以什么都不加,两个逗号就代表了什么都不加 如上面在st...

qq_37388518的博客 308

Structs中基本配置入门

第一章Structs的基本配置1.Structs应用配置Web.xml文件第一步:配置ActionServlet  action  org.appache.structs.ActionServlet   action   *.do注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个Ac

!Java 7170

.do.action的区别

因为我之前学过structs2和springmvc,structs2默认的是以.action为后缀,springmvc是以.do为后缀。structs1也是.do。网上查了下。这两者并没什么区别,只是名字不同而已。 structs2修改为.do后缀的方法如下: 可以在struts.xml中costant标签中,设置“struts.action.extension”的值为do即可。。 ...

aimeng1981的专栏 1044

Structs深入研究(一)-----Struts framework的工作原理和组件

Struts framework的工作原理和组件对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action Classes,Action Mapping(此处包括ActionForward),ActionFrom Bean。Struts ActionServlet控制器对象       ActionSer

Java之路 6250

Extjs4 输入式 ComboBox 实现 (软件环境 struts2.3 , spring3)

Extjs4 输入式 ComboBox 实现 (软件环境 struts2.3 , spring3) 第一步: 创建 ComboBox 对象, 该对象在Ext.form.field.ComboBox 下. var staffCombox = Ext.create('Ext.form.field.ComboBox', { // 下拉列表框的名称 label。 ...

思考中的程序员 219

Struts2上传图片和注意事项

Struts2上传图片和注意事项   1.必须有拦截器: (1).可放在公共拦截器中 &amp;lt;interceptor-ref name=&quot;fileUpload&quot;/&amp;gt; (2.可放在action中 &amp;lt;!-- 配置名字为fileUpload的拦截器 --&amp;gt; &amp;lt;interceptor-ref name=&quot;fileUpload&quot;&amp;gt; &amp;lt;!-- 配置...

zyjustin9的专栏 388

struts2,action上传文件

通过servlet实现文件上传,可以用用servlet接受到request的值的话:主要是这句话List&lt;?&gt; items = upload.parseRequest(request);拿到文件对象列表。 public void doPost(HttpServletRequest request, HttpServletResponse response) throws Se...

weixin_30826761的博客 66

当当网-day1

梁建全 liangjq@tarena.com.cn -------------第一天-------------- 1.项目需求简介   1)用户管理模块(3天)user     用户登录,登出,注册功能   2)产品浏览模块(2天)main     主界面,类别浏览界面,产品详细界面   3)购物车模块(1.5天)cart     购买,删除,恢复,变更数量,商品列表,金额统计等

oHuaXiaZhiFeng的专栏 1406

struts-文件上传

文件上传准备: 注意: 表单必须使用POST方式提交;(get方式太小) 使用二进制编码.multipart/form-data(把文件的数据发给服务端而不是文件的名称) &amp;lt;input type=&quot;file&quot; name=&quot;&quot;/&amp;gt; --&amp;gt; &amp;lt;s:file&amp;gt; public class UploadAction extends ActionSupport { pr...

hnffjncf的博客 142

day24(JAVAWEB上传与下载)

javaWeb上传与下载     上传:       上传方式:           jspSmartUpload :应用在jsp上的文件上传与下载组件。           FileUpload :用用在jaava环境上的上传的功能           Servlet3.0  :提供了文件上传功能           Struts2 ...

weixin_34062469的博客 134

使用Struts的通配符配置创建SEO形式的URL

1.什么是SEO SEO: Search Engine Optimization 搜索引擎优化。简单的说就是对搜索引擎友好,利于自己的网站被搜索引擎收录。用Struts产生的URL  http://.../xxx.do?method=aaa&amp;amp;id=123 不是搜索引擎友好的。我以前是用servlet来转换URL。 2.Struts的通配符配置 Struts1.2.x中对配置文件新增加了通配...

wangcheng 174

燃眉之急!sturt2的action中获取不到SWFUpload组件提交的request中的文件对象

是这样的,我用servlet接受到request的值的话:主要是这句话 List items = upload.parseRequest(request); 拿到文件对象列表。 [code=&quot;java&quot;]public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExce...

zhudahong12的博客 194

Day09_03目标:File类的判断功能的方法

目标:File类的判断功能的方法 方法: public boolean exists() :此File表示的文件或目录是否实际存在。 public boolean isDirectory() :此File表示的是否为目录。 public boolean isFile() :此File表示的是否为文件 public class FileDemo { public static void ma...

Dream丶Chaser的博客 202

项目一笔记

1.hibernate持久层的通用实现 public class BaseDaoImpl&amp;lt;T&amp;gt; extends HibernateDaoSupport implements IBaseDao&amp;lt;T&amp;gt; { //代表的是某个实体的类型 private Class&amp;lt;T&amp;gt; entityClass; @Resource//根据类型注入s...

langao_q的博客 235

Ubuntu 24.04 MySQL生产就绪配置全指南

MySQL 是广泛使用的开源关系型数据库,其在 Linux 系统(尤其是 Ubuntu)上的部署远不止执行一条 apt 安装命令。理解其底层原理——如默认启用 caching_sha2_password 身份验证插件、systemd 沙箱限制、AppArmor 安全策略干预——是实现稳定运行的关键。技术价值在于平衡安全性与可用性:既需开放远程访问(bind-address=0.0.0.0),又须规避权限与网络配置陷阱;既要调优 innodb_buffer_pool_size 等核心参数提升 QPS,又要通过

weixin_34268310的博客 414

关于java面试问题_请教一些关于JAVA面试问题 有很多 谢谢大家帮忙

请教一些关于JAVA面试问题 有很多 谢谢大家帮忙题 目java与C#相比,Java的优势在哪里?1.struts运作过程,hibernate的作用hibernate中,怎么判断是插入还是更新?怎么使用javascript进行页面跳转?怎么使用javascript将一个页面的一个参数传递到另外一个页面?使用存储过程进行分页,页面使用javascript分页什么是自定义控件?动态如何传数据?正...

weixin_29334463的博客 196

struts2处理.do后缀的请求

默认情况下,struts2是无法处理以.do为后缀的请求url的(默认情况下是.action或者不填,可以参见org.apache.struts2包下的default.properties文件)。 但是struts2是一个高配置的框架,所以我们可以通过配置来处理以.do为后缀的请求。 struts2提供了一系列的常量来供我们来配置。 如:我们可以在struts.xml文件中配置 [...

skyuck的专栏 525

单相逆变器Matlab仿真

单相逆变器Matlab仿真,通过脉冲发生器实现。效果良好

上一篇: day26_netstore
下一篇: day28_struts2Result
csdn_AF
博客等级 码龄9年 161粉丝 122原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值