`
goto0917
  • 浏览: 47999 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • take: 这是POI方式,不是JXLS方式. JXLS包路径都是net ...
    jxls
阅读更多
struts2.0的特点
1、form是一个pojo
2、action是一个pojo,所以struts2.0与框架的藕合度非常低。
实现Action时有时会继承于ActionSupport,
覆盖execute方法,从而创建一个Action。
因为ActionSupport提供了很多方法可以为开发提供方便。
3、支持依赖注入,主要借助于spring来实现
4、支持拦截处理,相当于是aop
综上struts2.0吸了spring及webwork2的优点,是
   强强联合的产品。
struts2.0环境配置
1、引入struts类包
2、修改web.xml,说明加载struts的监听器,在启动tomcat容器时通过监听器
加载struts2核心控制类。
3、在src根目录下加入struts.xml文件,说明具体action及相应的跳转
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<package name="login" namespace="" extends="struts-default">
<action name="login" class="action.LoginAction" method="login">
<result name="success"></result>
<result name="input"></result>
<result>success.jsp</result>
</action>
</package>
struts2.0实现登陆
1、写一个pojo
public class UsersVO
{
private String userName;
private String pwd;
//get及set方法
}
2、写一个Action
public class LoginAction
{
private UsersVO user;
//get及set方法
public String login()
{
if("accp".equals(user.getUserName) && "accp".equals(user.getPwd))
{
return "success";
}
return "error";
}
}
3、配置struts.xml文件
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<package name="login" namespace="" extends="struts-default">
<action name="login" class="action.LoginAction" method="login">
<result name="success"></result>
<result name="input"></result>
<result>success.jsp</result>
</action>
</package>
4、在jsp页面中调用action
<s:form action="login">
用户名<input name="user.userName" type="text">
<s:passward name="user.pwd" label="密码"/>
<s:submit/>
</s:form>
在action中加载request,application,request对象
通过拦截器加载session,application,request
public class MyAction implements SessionAware,RequestAware,ApplicationAware
{
private Map session;
private Map request;
private Map application;
//sesion,request,application不再是HttpServletRequest,
HttpSession,ServletContext类,而是程序在容器中运行时通过Map动态加载,
这样在测试时更为方便,传一个Map就可以测试,不是真正的HttpSession
,HttpServletRequest,ServletContext
}
通过ActionServletContext加载sesssion,application,request
public class MyAction extends ActionSupport
{
public String execute()
{
HttpServletRequest request=ActionServletContext.getRequest();
}
}
struts2中的相关标签:
非ui组件
--判断
<s:if test="#request.user.userName=='张三'">
是张三
</s:if>
<s:elseif test="#request.user.userName=='李四'">
是李四
</s:elseif>
<s:else>
不知道
</s:else>
--迭代
<s:iterator value="#request.users" id="user1" state="state">
<s:property value="#user1.userName"/>
</s:iterator>
--设置set
name 是  String 变量名字
scope 否  String 变量作用域,可以为application, session, request, page, 或action.
value 否  Object/String 将会赋给变量的值
id 否  Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
--显示属性
<s:property value=""/>
ui组件
下拉列表
语法
<s:select list="" listKey="" listValue="" value="" label=""/>
list:代表数据来源于一个集合
listKey:显示的值
listValue:真正的值
value:如果listValue中的值与value中的值相等,则对应项会选中
label:显示标签名
实例:
1、常数
<s:select list="#{1:'a1',2:'a2',3:'a3'}" listKey="key"
listValue="value" value="{'a1','a2'}"
2、可以取在application、session、request中的对象
<s:select list="#request.sexes" listKey="name" listValue="code"
value="{'01'}"/>
复选框:
1、普通集合
<s:checkboxlist name="skills1"
                        label="Skills 1"
                        list="{ 'Java', '.Net', 'RoR', 'PHP' }"
                        value="{ 'Java', '.Net' }" />
                 2、hashMap
        <s:checkboxlist name="skills2"
                        label="Skills 2"
                        list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }"
                        listKey="key"
                        listValue="value"
                        value="{ 1, 2, 3 }"/>
        <s:token/>:保证一个请求只被执行一次
1、在jsp中加入标签
<s:token/>
3、若用token在对应的action中加入拦截器,内容如下:
<action name="Token" class="tutorial.CoolTagAction">
            <interceptor-ref name="defaultStack" />
            <interceptor-ref name="token" />
            <result name="invalid.token">/token.jsp</result>                       
            <result>/token.jsp</result>
        </action>
引入struts2的css及javaScript脚本
< s:head />
<s:datatimerpicker>:时间选择器
<s:datetimepicker name="birthday" label="Birthday" />:显示时间
       
        两个组合框,第一个组合框发生改变时,自动更新第二个组合框
        1、代码中直接构造集合
   <s:doubleselect
            tooltip="Choose Your State"
            label="State"
            name="region" list="{'North', 'South'}"
            value="'South'"
            doubleValue="'Florida'"
            doubleList="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}"
            doubleName="state"
            headerKey="-1"
            headerValue="---------- Please Select ----------"
            emptyOption="true" />
2、 取已有集合中的值
<s:set name="foobar"
               value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
        <s:doubleselect list="#foobar.keySet()"
                          doubleName="technology"
                          doubleList="#foobar[top]"
                          label="Technology" />

<s:updownselect>:可以上下移动的列表项
<s:updownselect
            label = "Favourite Countries"
            list="#{'england':'England', 'america':'America', 'germany':'Germany'}"
            name="prioritisedFavouriteCountries"
            headerKey="-1"
            headerValue="--- Please Order Them Accordingly ---"
            emptyOption="true" />
<s:optiontransferselect/>:可以左右交换,上下移动的选择信息
        <s:optiontransferselect           
            label="Favourite Cartoons Characters"
            name="leftSideCartoonCharacters"
            leftTitle="Left Title"
            rightTitle="Right Title"
            list="{'Popeye', 'He-Man', 'Spiderman'}"
            multiple="true"
            headerKey="headerKey"
            headerValue="--- Please Select ---"
            emptyOption="true"
            doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"
            doubleName="rightSideCartoonCharacters"
            doubleHeaderKey="doubleHeaderKey"
            doubleHeaderValue="--- Please Select ---"
            doubleEmptyOption="true"
            doubleMultiple="true" />

导入一个文件并加入参数:
<s:include value="/condition.jsp">
            <s:param name="name">Max</s:param>
<s:param name="name" value="">Max</s:param>
        </s:include>
s:param的属性列表:
name 否  String 参数名
value 否  String value表达式
id 否  Object/String 用来标识元素的id。在UI和表单中为HTML的id属性

OGNL
作用:显示对象的属性值
#的作用:
1、显示request、session、application、parameters、atrr中的值,具体实例如下:
<s:property value="#request.user.userName"/>
attr可以代表request、session、application,查找顺序request>session>applcation
parameters代表表单域:
一个值:
<s:property value="#parameters.userName"/>
多个重名值:
<s:property value="#parameters.userName[0]"/>
2、过滤
1、取一批值
<s:iterator value="#request.users.users.{?#this.sex=='123'}" id="user" >
2、取一行的一个属性值
<s:property value="#request.users.users.{?#this.sex=='123'}.{userName}[0]"/>
3、定义hashMap
<s:set name="maps" value="#{1:'a1',2:'a2',3:'a3',4:'a4'}"/>
%的作用:相当于s:property
<s:property value="#request.user.userName"/>
<s:set name="p_userName" value="%{#request.user.userName}"/>
$有两个主要的用途
用于在国际化资源文件中,引用OGNL表达式
userName=用户名
password=密码
age=年龄
birthday=生日
userNameRequiredError=${getText('userName')}不能为空
pwdRequiredError=${getText('password')}不能为空
pwdLengthError=${getText('password')}的长度必在${minLength}和${maxLength}之间
ageValueError=${getText('age')}的长度必在${min}和${max}之间
birthdayError=${getText('birthday')}${birthday}的范围在${min}和${max}之间

${getText('userName')}是资源文件中已有的信息
${min}:是在LoginAction-validation.xml配置的参数信息
${birthday}取出单行文本<s:textfiled name="birthday">的信息
在Struts 2配置文件中,引用OGNL表达式,如
<action name="AddPhoto" class="addPhoto">
            <interceptor-ref name="fileUploadStack" />           
            <result type="redirect">ListPhotos.action?albumId=${albumId}</result>
        </action>
struts2中的国际化
1、什么是国际化
不用改源代码就可以适应不同的国家语言
2、国际化实现的过程
1、在src根目下加入struts.properties文件,说明全局的properties文件名称,内容如下
struts.custom.i18n.resources=messages
2、在src根目下加入messages_语言_国家.properties文件,说明具体键名与消息
messages_en_US.properties
messages_zh_CN.properties
3、如果在properties文件中有中文,要将其转码
native2ascii -encoding utf-8 temp.txt messages_zh_CN.properties
4、在jsp页面中显示
jsp显示的处理
<s:text name="hello"/>
<s:property value="%{getText('hello')}"/>
<s:textField name="user.userName" label="%{getText('hello')}"/>
2、代码中取值
3、国际化的参数
在资源文件的国际化字符串中使用OGNL,格式为${表达式}
${getText('userName')}从资源文件中取出键名为userName的信息
${min}:取出校验文件"action名-validation.xml"文件中标签param中的信息
<validators>   
    <field name="age">
         <field-validator type ="int">
          <param name="min">10</param>
          <param name="max">100</param>
          <message key="ageValueError"></message>
        </field-validator>
    </field>
</validators>
${属性名}:取出ui组件中的值<s:textfiled name="birthday">
资源文件的种类
1、全局的资源文件,在struts.properties中文件中配置具体的文件名
,所有类及jsp页可以共用,主要存放全局的消息、错误信息,struts.propertis中内容如下:
struts.custom.i18n.resources=messages
2、包范围内的资源文件,在包的根目下加入properties文件,其名称与类包名一样,这个包下的所有类都可以用[没有实现]
包名.properties
包名_语言_国家.properties
3、action范围内的资源文件,只有当前Action才可以用,注意jsp页面无法显示,只有提交action后才可以显示。
action类名_语言_国家.properties
4、通过i18n,动态加地相应的消息
资源文件的查找顺序
1、流程图
2、具体说明,如果现在有一个Action名称是ChildAction
查找ChildAction_国家_语言.properties文件或ChildAction.properties;
查找ChildAction实现的接口,查找与接口同名的资源文件interface.properties;
查找ChildAction的父类ParentAction的properties文件,文件名为ParentAction.properties;
判断当前ChildAction是否实现接口ModelDriven。如果是,调用getModel()获得对象,查找与其同名的资源文件;
查找当前包下的包名.properties文件;
查找当前包的父包,直到最顶层包;
在值栈(Value Stack)中,查找名为user的属性,转到user类型同名的资源文件,查找键为title的资源;
查找在struts.properties配置的默认的资源文件
拦截器
struts2.0已有拦截器的使用
拦截器列表
<interceptor name ="alias" class ="com.opensymphony.xwork2.interceptor.AliasInterceptor" />
<interceptor name ="autowiring" class ="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor" />
<interceptor name ="chain" class ="com.opensymphony.xwork2.interceptor.ChainingInterceptor" />
<interceptor name ="conversionError" class ="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor" />
<interceptor name ="createSession" class ="org.apache.struts2.interceptor.CreateSessionInterceptor" />
<interceptor name ="debugging" class ="org.apache.struts2.interceptor.debugging.DebuggingInterceptor" />
<interceptor name ="external-ref" class ="com.opensymphony.xwork2.interceptor.ExternalReferencesInterceptor" />
<interceptor name ="execAndWait" class ="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor" />
<interceptor name ="exception" class ="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor" />
<interceptor name ="fileUpload" class ="org.apache.struts2.interceptor.FileUploadInterceptor" />
<interceptor name ="i18n" class ="com.opensymphony.xwork2.interceptor.I18nInterceptor" />
<interceptor name ="logger" class ="com.opensymphony.xwork2.interceptor.LoggingInterceptor" />
<interceptor name ="model-driven" class ="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor" />
<interceptor name ="scoped-model-driven" class ="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor" />
<interceptor name ="params" class ="com.opensymphony.xwork2.interceptor.ParametersInterceptor" />
<interceptor name ="prepare" class ="com.opensymphony.xwork2.interceptor.PrepareInterceptor" />
<interceptor name ="static-params" class ="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor" />
<interceptor name ="scope" class ="org.apache.struts2.interceptor.ScopeInterceptor" />
<interceptor name ="servlet-config" class ="org.apache.struts2.interceptor.ServletConfigInterceptor" />
<interceptor name ="sessionAutowiring" class ="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor" />
<interceptor name ="timer" class ="com.opensymphony.xwork2.interceptor.TimerInterceptor" />
<interceptor name ="token" class ="org.apache.struts2.interceptor.TokenInterceptor" />
<interceptor name ="token-session" class ="org.apache.struts2.interceptor.TokenSessionStoreInterceptor" />
<interceptor name ="validation" class ="com.opensymphony.xwork2.validator.ValidationInterceptor" />
<interceptor name ="workflow" class ="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor" />
<interceptor name ="store" class ="org.apache.struts2.interceptor.MessageStoreInterceptor" />
<interceptor name ="checkbox" class ="org.apache.struts2.interceptor.CheckboxInterceptor" />
<interceptor name ="profiling" class ="org.apache.struts2.interceptor.ProfilingActivationInterceptor" />
在struts.xml中引入struts-default.xml文件
在具体的action中引入已有的拦截器
使用已有拦截器:
1、加载struts-default.xml文件
<include file="struts-default.xml"/>
<package  extends="struts-default">
<action>
</action>
</package>
2、在action中配置具体的拦截器
<action>
<interceptor-ref name ="timer" />
</action>
自定义拦截器:
1、必须继承于AbstractInterceptor,覆盖intercept(ActionInvocation ai) 方法
ActionInvocation ai;
ai.getInvocationContext();//得到当前类运行的环境
ai.getAction();//得到当前正在运行的action
ai.invoke();//调用action对应的方法
2、在struts.xml文件中说明具体的拦截器
<interceptors>
            <interceptor name ="safe" class ="intercept.SafeIntercept" />
        </interceptors>
3、在action中引用拦截器
<interceptor-ref name ="safe" />
校验框架:
自动校验:
struts自动校验器列表:
<validators>
    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
</validators>
实现自动校验:
在strus.properties中说明具体资源文件所在位置
struts.custom.i18n.resources=messages
在src根目录下加入如下文件,说明国际化的消息
messages_en_US.properties
具体内容:
userName=userName
password=password
age=age
birthday=birthday
userNameRequiredError=${getText('userName')}is not null
pwdRequiredError=${getText('password')}is not null
pwdLengthError=${getText('password')} 's length must between ${minLength} and ${maxLength}
ageValueError=${getText('age')} 's range must between  ${min} and ${max}
birthdayError=${getText('birthday')} between ${min} and ${max}
messages_zh_CN.properties
具体内容:
userName=用户名
password=密码
age=年龄
birthday=生日
userNameRequiredError=${getText('userName')}不能为空
pwdRequiredError=${getText('password')}不能为空
pwdLengthError=${getText('password')}的长度必在${minLength}和${maxLength}之间
ageValueError=${getText('age')}的长度必在${min}和${max}之间
birthdayError=${getText('birthday')}${birthday}的范围在${min}和${max}之间

以上文件有中文,转码命令如下:
native2ascii -encoding utf-8 messages.txt messages_zh_CN.properties
在运行Action所在包中加入Action类名称-validation.xml文件,说明具体的校验规则。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
          "-//OpenSymphony Group//XWork Validator 1.0//EN"
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">         
<validators>
    <field name ="userName">
        <field-validator type ="requiredstring">
          <message key="userNameRequiredError"></message>
        </field-validator>
    </field>  
    <field name="pwd">
        <field-validator type ="requiredstring">
          <message key="pwdRequiredError"></message>
        </field-validator>
         <field-validator type ="stringlength">
           <param name="minLength">6</param>
           <param name="maxLength">18</param>
           <message key="pwdLengthError"></message>
        </field-validator>
    </field>   
    <field name="age">
         <field-validator type ="int">
          <param name="min">10</param>
          <param name="max">100</param>
          <message key="ageValueError"></message>
        </field-validator>
    </field>
    <field name="birthday">
         <field-validator type ="date">
         <param name="max">2008-01-31</param>
         <param name="min">2008-01-01</param>
          <message key="birthdayError"></message>
        </field-validator>
    </field>
</validators>
在jsp页面是显示
<s:form action="loginAction">
<s:textField name="userName" label="%{getText('userName')}"/>
<s:textField name="pwd" label="%{getText('password')}"/>
<s:textField name="birthday" label="%{getText('birtday')}"/>
<s:textField name="age" label="%{getText('age')}"/>
</s:form>
通过上面的内容可以看到<field-validator type=""/>标签都有一个type属性,其值与struts自动校验器列表中的name属性是一样的。
field-validator标签内有message标签,其有一个key属性与资源文件的键名是一样的,通过该键名加载错误信息。
在资料文件中通过${min},${max}取"<param name="max">10</param>"中值,${birthday}取LoginAction中birthday属性值,
${getText('birthday')}取资源文件键名为birthdays消息。
Validator和Field-Validator之间的区别
Field-Validator:只校验一个字段的规则
Validator:
可以校验多个字段之间的关系
<validator type="expression>
         <param name="expression">pwd ge/lt/gt/le/ge pwd1</param>
         <message>pwd and pwd1 must equal</message>
</validator>
可以校验一字段
<validator type="required">
        <param name="fieldName">birthday</param>
        <message>You must enter a value for bar.</message>
</validator>
短路(Short-Circuiting):如果一个校验出错,其余后续的校验将不再进行
自动校验的顺序是首先Validator,其次Field Validator,
但在Validator或者Field Validator执行的过程中,
顺序按照xml文件中的定义,以上的执行顺序是。
需要修改的内容:
配置文件查找顺序:
对于LoginAction写一个LoginAction-validation.xml,其会根据action名称找开
LoginAction-validation.xml文件,但是如果LoginAction有继承关系或实现了接口
其找具体的校验规则是怎样的呢?
假设以下条件成立:
接口 Animal;
接口 Quadraped 扩展了 Animal;
类 AnimalImpl 实现了 Animal;
类 QuadrapedImpl 扩展了 AnimalImpl 实现了 Quadraped;
类 Dog 扩展了 QuadrapedImpl;
如果Dog要被校验,框架方法会查找下面的配置文件(其中别名是Action在struts.xml中定义的别名):
Animal-validation.xml
Animal-别名-validation.xml
AnimalImpl-validation.xml
AnimalImpl-别名-validation.xml
Quadraped-validation.xml
Quadraped-别名-validation.xml
QuadrapedImpl-validation.xml
QuadrapedImpl-别名-validation.xml
Dog-validation.xml
Dog-别名-validation.xml
实现手动校验:
1、Action实现Validatable接口,并实现接口中定义的方法,内容如下
public void validate()
{
User user = getUser();
if (userName==null||userName.length=0)
{
    addActionError(getText("userNameRequired"));
}
if (pwd==null||pwd.length=0)
{
    addActionError(getText("passwordRequried"));
}
}
通过注解校验:
1、校验类说明
枚举类型
ValidatorType     
Field    校验字段
Simple   校验其他
Annotation(标注)类型
Validation
    用来标记一个类需要被校验
ConversionErrorFieldValidator
    字段转换出错
DateRangeFieldValidator
    日期范围校验
DoubleRangeFieldValidator
    Double类型范围校验
EmailValidator
    Email地址校验
ExpressionValidator
    使用一个OGNL表达式的校验,功能非常强大
FieldExpressionValidator
    针对一个字段的使用OGNL表达式的校验
IntRangeFieldValidator
    Int类型范围校验
RegexFieldValidator
    正则表达式校验
RequiredFieldValidator
    必填字段校验
RequiredStringValidator
    必填String校验,
StringLengthFieldValidator
    字符串长度校验
UrlValidator
    URL校验
Validations
    可以组合上述的各种校验类型以满足更多的需求。
VisitorFieldValidator
    可以将Action中的对象的属性的校验方法定位到已经定义的对象原有的校验方法
CustomValidator
ValidationParameter
        两个类一起完成自定义的校验
javsScript校验:
在form中加入validate="true"属性
<s:form validate="true">
</s:form>
只有下面的几种支持javaScript校验
required validator
requiredstring validator
stringlength validator
regex validator
email validator
url validator
int validator
double validator
struts2.0与spring2.0的结合
1、在/WEB-INF/中加入applicationContext.xml文件并引入spring相关的类包
2、applicaitonContext.xml中Action配置信息如下:
<bean id="insert" class="struts.MakeAction">
<property name="facade">
<ref local="facadeProxy" />
</property>
</bean>
3、在web.xml文件中指定spring的监听器,加载applicationContext.xml文件
<listener>  
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>
    4、修改src根目下的struts.xml中的action标签,其class不再指向真正的Action类,而是spring的一个bean的ID名称
<action name="insert" class="insert" method="insert">
<result name="error">/error.jsp</result>
<result name="success">/succ.jsp</result>
</action>
struts2.0的转换器(converter)
批量转化数据,可以将table中的多行信息转化为到Action中的List属性中
类型的转化:具体实现
customer.buies[0].buyName
customer.buies[1].buyName
customer.buies[2].buyName



分享到:
评论

相关推荐

    Struts2漏洞检查工具Struts2.2019.V2.3

    Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...

    struts2jar包

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...

    struts2项目开发

    Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...

    Struts2视频教程

    ### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    Struts2VulsTools-Struts2系列漏洞检查工具

    该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    struts2-showcase.rar

    Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    -- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --&gt; &lt;bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...

    Struts2+Jquery+Ajax

    "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...

    struts2所有jar包程序文件

    Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...

    Struts2教学视频

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...

    张龙圣思园struts2学习笔记word

    Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...

    struts2 chm 帮助文档

    struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...

    Struts2开发常用jar包

    包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    全网最全Struts 2 全版本漏洞检测工具,最新struts漏洞更新

    Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

Global site tag (gtag.js) - Google Analytics