标签:
=============================基本结构=============================
登录程序运行流程图:
login.jsp-->核心控制器-->Action-->Result-->success.jsp
核心控制器:
1.在web.xml中进行配置
2.对框架进行初始化,以及处理所有的请求
Action:
1.开发Action
a.实现Action接口
b.继承ActionSupport类
范例:
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- 请求地址/需要调用的Servlet -->
<action name="login" class="com.xuetamg9.demo.action.LoginAction">
<result name="success">/page/manage.jsp</result>
<result name="input">/page/login.jsp</result>
<result name="error">/page/error.jsp</result>
</action>
</package>
</struts>
Result:
1.实现对结果的调用
2.result元素的值指定对应的实际资源位置
3.name属性表示result逻辑名
结果类型:
a.登录成功,重定向到index.action
b.验证失败,转发到登录页面
c.登录失败,重定向到错误页面
范例:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.xuetamg9.demo.action.LoginAction" method="login">
<!-- 登陆成功 -->
<result name="success" type="redirectAction">index.action</result>
<!-- 验证失败 -->
<result name="input" type="dispatcher">/login.jsp</result>
<!-- 登陆失败 -->
<result name="error" type="redirect">/page/error.jsp</result>
</action>
</package>
</struts>
==================================配置文件=============================
一、struts.xml
1.核心配置文件,主要负责管理Action
2.通常放在WEB-INF/classes目录下,在该目录下的struts.xml文件可以被自动加载
范例:
<struts>
<constant name="" value=""/>
<package name="" namespace="" extends="">
<action name="" class="">
<result name=""></result>
</action>
</package>
</struts>
a.constant元素
1.配置常量,可以改变Struts2框架的一些行为
2.name属性表示常量名称,value属性表示常量值
范例:
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="" namespace="" extends="">
<action name="" class="">
<result name=""></result>
</action>
</package>
</struts>
b.package元素
1.包的作用:简单维护工作,提高量用性,可以"继承"包,并添加自己包的配置
2.name属性必须唯一,指定包的名称
3.extends属性指要继承的包
4.namespace属性定义该包中action的命名空间,为可选属性
范例:
<struts>
<constant name="" value=""/>
<package name="default" namespace="/" extends="struts-default">
<action name="" class="">
<result name=""></result>
</action>
</package>
</struts>
二、struts-default.xml
1.Struts2默认配置文件,会自动加载
2.struts-default包在struts-default.xml文件中定义
三、struts-plugin.xml
1.Struts2插件使用的配置文件
加载顺序:struts-default.xml --> struts-plugin.xml --> struts.xml
==================================Action=============================
作用:
1.封装工作单元
2.数据转移场所
3.返回(字符串)结果逻辑名(execute方法)
范例:
public class HelloWorldAction implements Action {
private String name = "";
private String message = "";
public String execute() {
this.setMessage("Hello,"+this.getName()+"!");
return SUCCESS;
}
//...省略setter/getter方法
}
属性:
1.method
a.实现Action中不同方法的调用
b.特点:
1)避免动态方法调用的安全隐患
2)导致大量的Action配置
范例:
<action name="login" class="com.xuetang9.demo.action.UserAction" method="login">
…………
</action>
<action name="register" class="com.xuetang9.demo.action.UserAction" method="register">
…………
</action>
2.
动态方法调用:
1.作用:减少Action数量
2.使用:actionName!methodName.action
3.禁用:将属性struts.enable.DynamicMethodInvocation设置为false
范例:
public class UserAction implements Action {
…
public String login() {… }
public String register() {…}
}
<action name="user" class="com.xuetang9.demo.action.UserAction">
<result name="login">/page/success.jsp</result>
……
</action>
通配符(*)的使用:另一种形式的动态方法调用
范例:
<action name= "*User" class="com.xuetang9.demo.action.UserAction" method="{1}">
<result>/page/{1}_success.jsp</result>
<result name="input">/page/{1}.jsp</result>
</action>
/loginUser.action --> method="login"
/page/login_success.jsp
/page/login.jsp
/registerUser.action --> method= "register"
/page/register_success.jsp
/page/register.jsp
配置默认Action:
1.没有Action匹配请求时,默认Action将被执行
2.通过<default-action-ref … />元素配置默认Action
范例:
<struts>
<default-action-ref name="defaultAction"/ >
<package name="default" extends="struts-default">
<!-- 省略class属性,将使用ActionSupport类 -->
<action name="defaultAction">
<result>error.jsp</result>
</action>
</package>
</struts>
【注意:如果请求的Action不存在,页面跳转到error.jsps】
====================================Result===================================
常用结果类型:
1.dispatcher类型(转发)
默认结果类型,后台使用RequestDispatcher转发请求
2.redirect类型(重定向jsp)
后台使用的sendRedirect()将请求重定向至指定的URL
3.redirectAction类型(重定向Action)
主要用于重定向到Action
配置动态结果--动态结果
配置时不知道执行后的结果是哪一个,运行时才知道哪个结果作为视图显示给用户
范例:
public class UserAction extends ActionSupport {
private String nextDispose;
public String login() {
...
if(user.isManager()){
nextDispose = "manager";
}else{
nextDispose = "common";
}
return SUCCESS;
}
public String getNextDispose(){
return nextDispose;
}
}
<struts>
<package name="default" extends="struts-default">
<action name="login" class="com.xuetang9.demo.action.UserAction" method="login">
<result type="redirectAction">${nextDispose}</result>
<result name="error">/page/error.jsp</result>
</action>
<action name="common" class="com.xuetang9.demo.action.CommonUserAction">
…
</action>
<action name="manage" class="com.xuetang9.demo.action.ManagerAction">
...
</action>
</package>
</struts>
============================全局结果==========================
实现同一个包中多个action共享一个结果
范例:
<struts>
<package name="default" extends="struts-default">
<default-action-ref name="defaultAction"/ >
<!-- 全局结果位于package元素内-->
<global-results>
<result name="error">/error.jsp</result>
<result name="login" type="redirect">/login.jsp</result>
</global-results>
…省略action的配置…
</package>
</struts>
查询不要提交事务
增删改都需要提交事务
重定向 上下文不一样(请求一次和响应一次,之后服务器不管。下次再请求一次和响应一次,之前的请求响应就丢失了)
标签:
原文地址:http://www.cnblogs.com/ivy-xu/p/5618268.html