欢迎光临散文网 会员登陆 & 注册

改项目名和8080port等,STRUTS2通配符配置和servletAPI调用方法,config【诗书画唱】

2021-01-07 01:01 作者:诗书画唱  | 我要投稿



本期的导读


改项目名和8080port等,STRUTS2通配符配置和servletAPI调用方法,思考,display-name

,action传参的方法,action中request,session传参的方法,获取request对象,获取response对象,获取ServletContext(application)对象,改项目名和8080,设置持续时间,

返回结果配置,action中使用servletAPI,location,个人思考,*,*是通配符。



location[ləʊˈkeɪʃn][loʊˈkeɪʃn]

n.位置; 定位; 地点; 地方; (电影的)外景拍摄地;

[例句]The importance of the town is due to its geographical location.

这座城镇的重要性在于它的地理位置。

[其他]复数:locations


改项目名和8080,设置持续时间


改项目名时就是要鼠标右键,点“rename”,之后removeservlet,重启servlet。



port就是计算机接口。


config[kənˈfɪg][kənˈfɪg]

abbr.(计算机系统)配置;

[例句]What is your config of your computer you mainly use?

你最常使用的电脑配备如何?




(因为自己插入图片时没保存,害得我现在是第2遍写,所以一定要保存后再离开界面)

display-name

例子

package com.jy.action;


public class ClassicAction {

    public String perform(){

    return "success";

    }

}








action中request,session传参的方法START



package com.jy.action;


import com.opensymphony.xwork2.ActionContext;


public class OneAction {

//http://localhost:8080/J190802/pub/oneAc.action

    public String deal(){

    ActionContext ctx = ActionContext.getContext();

    //相当于request.setAttribute("act","admin");

    ctx.put("act", "admin");

    //相当于session.setAttribute("cart","购物车信息");

    ctx.getSession().put("cart", "购物车信息");

    return "success";

    }

}

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation

//DTD Struts Configuration 2.1//EN" 

"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

    <package name="my" namespace="/pub" extends="struts-default">

        <!-- <action name="to*Ac" class="com.jy.action.PubAction"

            method="to{1}">

            <result name="{1}">/{1}.jsp</result>

        </action>

        <action name="to*Ac" class="com.jy.action.ProductAction"

            method="to{1}">

            <result name="{1}">/{1}.jsp</result>

        </action> -->

        <action name="oneAc" class="com.jy.action.OneAction"

            method="deal">

            <result>/show.jsp</result>

        </action>    

        <action name="twoAc" class="com.jy.action.TwoAction"

            method="perform">

            <result>/msg.jsp</result>

        </action>

        <!-- 最详尽的action配置 -->  

        <action name="classicAc" class="com.jy.action.ClassicAction"

            method="perform">

            <result name="success" type="dispatcher">

                <!-- 需要跳转的页面 -->

                <param name="location">/ts.jsp</param>

                <!-- 是否允许使用OGNL表达式 -->

                <param name="parse">true</param>

            </result>

        </action>  

        <action name="*_*Ac" class="com.jy.action.{2}Action"

            method="to{1}">

            <result name="{1}">/{1}.jsp</result>

        </action>

    </package>

</struts>

*是通配符。


个人思考:更具体(更不抽象,如“*aa”)的关于代表所有字符串的*的action配置要在相此下更通用(更抽象)配置(如“*a*”)前面,因为这里是从上往下执行的,所以这样可防更具体的部分被更通用的部分覆盖而失效。

{1}代表仅在name中的*中的第1个*,{1}之类的出现在name之外的配置中。




action中request,session传参的方法END



package com.jy.action;


public class ProductAction {

//http://localhost:8080/J190802/pub/tomanageAc.action

    public String tomanage(){

    return "manage";

    }

    //http://localhost:8080/J190802/pub/toaddAc.action

    public String toadd(){

    return "add";

    }

    //http://localhost:8080/J190802/pub/todetailAc.action

    //http://localhost:8080/J190802/pub/detail_ProductAc.action

    public String todetail(){

    return "detail";

    }

}

package com.jy.action;


public class PubAction {

//http://localhost:8080/J190802/pub/tologinAc.action

//第1个*=login

//第2个*=Pub

//http://localhost:8080/J190802/pub/login_PubAc.action

    public String tologin(){

    return "login";

    }

    //http://localhost:8080/J190802/pub/toregAc.action

    //{1}=reg,{2}=Pub

    //http://localhost:8080/J190802/pub/reg_PubAc.action

    public String toreg(){

    return "reg";

    }

    //http://localhost:8080/J190802/pub/tomodifypwdAc.action

    public String tomodifypwd(){

    return "modifypwd";

    }

    //http://localhost:8080/J190802/pub/tovalideAc.action

    public String tovalide(){

    return "valide";

    }

}

package com.jy.action;


import org.apache.struts2.ServletActionContext;


public class ThreeAction {

    public String test(){

    //获取request对象

    ServletActionContext.getRequest();

    //获取response对象

    ServletActionContext.getResponse();

    //获取ServletContext(application)对象

    ServletActionContext.getServletContext();

    return null;

    }

}

package com.jy.action;


import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.interceptor.ServletResponseAware;


public class TwoAction implements ServletRequestAware,

ServletResponseAware {

    private HttpServletResponse response;

    private HttpServletRequest request;

@Override

public void setServletResponse(HttpServletResponse arg0) {

// TODO Auto-generated method stub

this.response = arg0;

}


@Override

public void setServletRequest(HttpServletRequest arg0) {

// TODO Auto-generated method stub

this.request = arg0;

}

//http://localhost:8888/J190802/pub/twoAc.action

public String perform(){

request.setAttribute("msg", "Hello world");

return "success";

}


}




讲义

action的配置方式:

学习<action>标签的用法


通配符配置方法:难点


实现跳转到登录页面,注册页面和修改密码,短信验证页面功能(这些功能都有后台业务)


servlet中的四大作用域:this,request,session,servletContext,还有response

在action中使用request和response对象的方法


在action中使用servlet API的方法:

1、通过ActionContext的getContext方法获取

2、通过action实现ServletRequestAware和ServletResponseAware以及ServletContextAware接口实现

3、通过ServletActionContext的方法获取servletAPI




action中使用servletAPI的PPT




返回结果配置的PPT







改项目名和8080port等,STRUTS2通配符配置和servletAPI调用方法,config【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律