1.编写web.xml
<web-app version="2.5"
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_2_5.xsd ">
<filter>
<filter-name>struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
2.配置struts.xml 需要放在src文件夹下
<?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>
<package name="struts2" namespace="/" extends="struts-default">
<action name="registerAction" class="action.registerAction">
<result name="success">/registerSuccess.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>
-
package提供了将多个Action组织为一个模块的方式
-
package的名字必须是唯一的 package可以扩展 当一个package扩展自
-
另一个package时该package会在本身配置的基础上加入扩展的package的配置 父package必须在子package前配置
-
name:package名称 extends:继承的父package名称 abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false namespace:定义package命名空间 该命名空间影响到url的地址, 例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
-
Action配置 一个Action可以被多次映射(只要action配置中的name不同)
-
name:action名称 class: 对应的类的路径 method: 调用Action中的方法名
-
-
节点配置
-
name : result名称 和Action中返回的值相同 type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
-
—struts2中struts.xml配置文件详解 详细地址:https://www.cnblogs.com/wkrbky/p/5889328.html
3.编写jsp页面
- jsp页面表单中参数name要与Action类中参数name一致。
4.编写Action类
- 首先要继承ActionSupport类。
- 定义参数
- 编写public String execute(){}方法,并抛出Exception异常
public String execute() throws Exception{};
返回值为String,要和struts中result的name属性一致。 - 参数的get/set方法
- 其他方法。如果是getX()方法,则不需要定义X,并且返回值会自动赋值给X。
5.编写定义验证方式的validation.xml
-
首先,该文件的格式为:Action名+“-validation.xml”,并且必须和Action处于同一个包中
-
比如该文件的名字为:registerAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//Xwork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入用户名。</message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入密码。</message> </field-validator> </field> <field name="confirm"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入确认密码。</message> </field-validator> </field> <field name="confirm"> <field-validator type="fieldexpression"> <param name="expression">(confirm eq password)</param> <message>确认密码必须和密码一致</message> </field-validator> </field> <field name="email"> <field-validator type="email"> <message>电子邮件地址必须有效</message> </field-validator> </field> <field name="handphone"> <field-validator type="requiredstring"> <message>手机号不能为空</message> </field-validator> </field> <field name="handphone"> <field-validator type="regex"> <param name="regexExpression"><![CDATA[^1[358]\d{9}$]]></param> <message>请填写正确的手机号。</message> </field-validator> </field> </validators>
-
field:
-
name:需要过滤的参数名
-
field-validator:
-
type:过滤类型 int 整数; double 实数; date 日期; expression 两数的关系比较; email Email地址; url web地址 visitor 访问 conversion 转换 regex 正则表达式验证; required 是否为空; requiredstring 必须字符; stringlength 输入字符长度限制 ······ message:错误信息 <!-- 去空格 --> <param name="trim">true</param> --trim()用于去空格
-
如果type=“fieldexpression” 则
-
<param name="expression"> (表达式) </param>
-
如果type=“regex” 则
-
<param name="regexExpression"> <![CDATA[正则表达式]]> </param> -因为在xml中<>会被解释为新的元素。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。
struts2 中ActionContext.getContext().getSession().put("","") 和HttpSession 有什么区别
- ActionContext.getContext().getSession().put("",""):是将值保存到session中,效果等同于session.setAttribute("",""),它就是struts2对后者(HttpSession)的一个封装,把session,request,application全都放到了actioncontext()容器中了。
======================================
可以这样理解:
ActionContext.getContext().getSession()是获取struts2封装后的session对象,
而HttpSession session = ServletActionContext.getRequest().getSession();是获得原本jsp页面中的普通session,可以理解为原始的jsp页面session。
request、response、application 也类似 举一反三
举个例子:
HttpSession session = ServletActionContext.getRequest().getSession(); //创建
ActionContext.getContext().getSession().put(“msg”, “Hello World from Session!”); //存 在jsp页面使用struts2的标签来解析(取值)
session.setAttribute(“softtypeid”, softtypeid); //存 在jsp页面用${softtyptid}来取值,或者使用jstl标签取值
获取 if(session.getAttribute(“softtypeid”)!=null){
if(!softtypeid.equals(session.getAttribute(“softtypeid”)))
pager_offset=1; //如果不是同一种分类,返回是第一页
}