Struts2框架入门学习

--安装Struts2框架
解压安装包之后得到四个文件夹




以前的jsp页面存放在WebContent目录下,直接存放在WebContent即web应用
根目录下,不安全这种方式,根据mvc模式,用户不能直接请求jsp页面,而是通过控制器
来请求,所以我们可以在WEB-INF的目录下建一个文件夹来存放jsp页面,名字任意,这样防止
用户直接在网站的根目录下访问网页,将其隐藏起来。


想控制器请求,通过控制器转发调度页面,mvc思想


在Struts2中,请求地址约定的一般格式为XXX或XXX.action,eg:loginForm或loginFrom.action


Struts2的开发步骤:
(1)先定义一个能发送请求的页面
     即可以是超链接,也可以是表单
(2)开发action类,定义处理用户请求的Action类
     Struts2对Action并没有太多额外的要求,但通常建议Action满足如下需求
 :A:推荐实现Action接口,或者继承ActionSupport。ActionSupport实现了Action接口
   B:为每个请求参数都提供Field,并且为之提供相应的setter和getter方法
      为需要传到页面的处理结果也提供Field,并且提供settter和gettter方法;
   C:有(xxx.action)无参数的构造器,一般不写的话,默认有一个无参的构造   器;


(3)配置Action类
     所有的action都需要放在package里面配置
     <action.../>元素有如下常用属性:
     -name:指定该Action处理哪个请求.
     -class:指定该Action对应的处理类。默认值:<default-class-ref../>       元素指定了Action默认的处理类。
     - method:指定用户使用Action的哪个方法来处理用户的请求,默认值为       execute。
     并为处理返回的字符串,指定相应的物理视图 
 






/**********
     Action接口与ActionSupport
   Action接口定义了5个字符串常量,因为经常要用到的常量
   还定义了一个execute方法,
/**********   
用了Struts2之后,底层的运行原理
 (1)浏览器发送请求,abc.action。 .action后缀可以保留也可以省略
 (2)浏览器的请求被StrutsPrepareAndExceuteFilter拦截。
      因为我们在web.xml指定StrutsPrepareAndExceuteFilter会过滤所有的请求
 (3)StrutsPrepareAndExceuteFilter它回去创建Action实例,
      假如我们请求abc.action,StrutsPrepareAndExceuteFilter会搜索struts.xml文件中name为abc的Acion配置,根据struts文件中Action的class属性"使用反射


"来创建Action实例(反射的思想,比较方便)
 (4)调用
    Map<String,String> paramap = request.getParameterMap();--返回所有的请求参数名-参数值 组成的Map集合     
   使用循环(String paraName :paramap.keySet)
      {

        //Action类.getMethod("set"*paraName的首字母大写)//得到请求参数对应setter方法,//这块是用到了反射
//得到请求参数对应setter方法
Method setter = Action类.getMethod("set"+paraName.subString(0,1).toUpperCase()+paraName.subString(1),String.class);
//得到请求参数对应的值
String paraValue = paramap.get(paraName);      
//以Action实例为调用者,调用setter方法,把请求参数值作为参数值传入
setter.invoke(actionintance,paraValue);
}
  (5)再次通过反射来调用method属性所指定的方法.
       返回一个字符串
  (6)根据struts.xml文件中的<result.../>元素的name以及物理视图资源,跳转到实际的视图资源。






***********************如何在action中访问Servlet API***********
     总有些时候,我们需要访问Servlet API
     比如我们需要把数据存入Session、Application
   更甚至于我们要添加Cookie:reponse.addCookie();
   
 Struts2提供了两种方式来访问Servlet API
 -伪访问。借助于ActionContext   提供了getSession()--模拟访问Http Session   getApplication--模拟访问application
 -真访问(比如要添加Cookie)。借助于ServeltActionContext。
ServeltActionContext提供了如下的静态方法:
- static PageContext getPageContext() 
        - static HttpServletRequest getRequest() 
        - static HttpServletResponse getResponse() 
        - static ServletContext getServletContext()  








伪访问:
eg:     @Override
public String execute() throws Exception {
UserService us = new UserService();
// 调用业务逻辑组件来处理用户的登录
Integer id = us.validateLogin(user);
if (id > 0) {
ActionContext actCtx = ActionContext.getContext();
java.util.Map<String, Object> sess = actCtx.getSession();
//下面的代码,表面上只是向Map存入key-value对,但由于该Map模拟HTTP Session
//因此下面存入的key-value对,实际会存入HTTP Session中
sess.put("userID",id);
return SUCCESS; // SUCCESS是常量名,它的真实值是"success"
}
return ERROR;
}


在前台JSP页面中获取action中存入session的信息;代码如下:::
<table>
恭喜你!${sessionScope.userID}号用户登录了
</table>
-----------真访问:
// 此处如果希望,用户登录成功,还要添加Cookie
// 由于添加Cookie必须用HttpServletResponse对象,所以该Action必须Servlet API耦合
HttpServletResponse response = ServletActionContext.getResponse();
Cookie cookie = new Cookie("user_name", user.getName());
cookie.setMaxAge(300000);//设置cookie的生命周期
在前台JSP页面中获取action中存入cookie的信息;代码如下:::
<body>
        访问的cookie值为:--${cookie.user_name.value}--
        </body>




***********************************************心得
struts2框架通过struts.xml配置文件,使用其中的action中的class属性反射拿到对应调用的action class文件,可以执行相应的调度动作,这种配置struts.xml文件


的方式极大地利于程序的可扩展性,因为你自己写了一堆文件,接口呀之类的,按照以前的方式,需要在调用你写的程序的文件中,new出来你的实例才能调用你的东西,


不利于程序的扩展,而现在在配置文件中,只需用在action的class属性中写好你写的类的路径,就能通过反射拿到你的class字节码文件,然后完成对你写的东西的调用


,不用在new实例,struts这种方式非常的给力快捷!!!!!!!!!!
************************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值