使用struts的步骤

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; //如果不是同一种分类,返回是第一页
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值