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

本期的导读
改项目名和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







