struts框架文件说明

来源:互联网 发布:姑苏学办公软件 编辑:程序博客网 时间:2024/06/05 21:18

1.web.xml的主要作用是配置filterdispatcher来拦截http请求

web.xml配置过滤器,会话时间,欢迎页面,错误页面,监听器,控制器等等<web-app><!--关键元素分析--><!--指定一个欢迎页面--><welcome-file-list>    <welcome-file>a.jsp</welcome-file>    <welcome-file>b.jsp</welcome-file></welcome-file-list></web-app><!--声明一个filter,可以同时拦截多个请求URL--><filter>    <filter-name>struts<filter-name><!--指定filter的名字,不能为空-->    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><!--filter实现类--></filter><!--定义拦截的URL--><filter-mapping>    <filter-name>struts2</filter-name><!--必须是已经声明过的过滤器-->    <url-pattern>/*</url-pattern><!--拦截所有的URL地址--></filter-mapping><!--如果不希望用户看到错误的原始信息,可以配置异常页面--><error-page>    <error-code>404</error-code><!--指定错误代码-->    <location>/error.jsp</location><!--如果发生错误,返回location子元素中的指定文件--></error-page><!--配置异常页面捕获Java异常--><error-page>    <exception-type>java.lang.Exception</exception-type><!--指定java异常类-->    <location>/error.jsp</location></error-page><!--监听器--><!--可以用于初始化spring框架--><listener>    <listener-class>org.spring.framework.web.context.ContextLoaderListener</listener-class></listener><!--指定会话时间--><session-config>    <session-timeout>30</session-timeout></sessio-config><!--配置常量--><init-param>    <param-name>struts.il8n.encoding</param-name>    <param-value>UTF-8</param-value></init-param>

常见的页面状态码

200 服务器成功返回页面404 请求的页面不存在503 服务不可用403 服务器拒绝请求408 请求超时413 请求实体过大,超过服务器处理能力414 请求网址过长,超过服务器处理能力415 请求格式不支持416 请求范围不符合要求417 请求为满足期望值500 服务器内部错误501 尚未实施502 错误网关503 服务不可用504 网关超时505 http版本不支持

2.struts.properties 用来管理Struts2框架中大量的常量
开发中根据用户需求的不同,需要更改属性值,改变属性值的方法就是在properties文件中配置.properties文件是key-value对,一个key对应一个value

###设置默认编码集为utf-8格式struts.il8n.encoding=UTF-8###设置使用开发模式struts.devMode=true###设置默认的local为en_usstruts.locale=en_US

关键元素分析

struts.properties关键元素分析struts.il8n.encoding 指定web程序的默认编码集,一般设置为UTF-8struts.devMode 指定struts2是否使用开发模式 默认falsestruts.configuaration 指定Struts2框架的配置管理器 默认falsestruts.locale 指定该web应用的默认Locale,默认是en_USstruts.action.lotension 由Struts2处理的请求后缀 默认的后缀是actionstruts.tag.altSyntax 指定是否在Struts2标签中使用表达式语法 一般设置为truestruts.ui.theme 指定视图中Struts2标签的默认主题,默认是xhtmlstruts.custom.il8n.resources 指定web程序所需要的国际化资源文件struts.custom.properties 指定加载附加的配置文件位置struts.enable.DynamicMethodInvocation 指定Struts2框架是否支持动态方法调用,默认是truestruts.il8n.reload 指定国际化信息是否自动加载 默认是truestruts.http.port 指定web应用的端口

struts.xml文件主要用来配置action和http请求之间的关系

<!--struts根元素--><struts>    <!--配置包defualt,命名空间"/"-->    <paakage name="default" namespace="/" extends="struts-default">        <!--配置名为NN的action.实现类是XXXAction-->        <action name="NN" class="XXXAction">            <result>/YY.jsp</result><!--返回YY.jsp-->        </action></struts>

关键要素分析

struts.xml关键元素分析几个重要的元素package元素用来配置包name是一个必须的属性,表示包的名字extends 可选属性指定继承自其他包namespace 可选属性 指定命名空间,标识此包下的action的访问路径abstract 可选属性 声明此包我抽象包<!--配置名为A的包,继承自struts-default,命名空间为默认的命名空间--><package name="A"  extends="struts-default">    <action name="login" class="com.action.LoginAction">        <result name="login_success">/login_success.jsp</result>    </action></package><!--处理action为http://localhost:8080/login.action"--><package name="B" namespace="/" extends="struts-default">    <action name="exit" class="com.action.ExitAction"        <result name="exit_success" >/exit_success.jsp</result>    </action></package><package name="C" namespace="/info" extends="struts-default">    <action name="stu" class="com.action.StuAction">        <result name="stu_success">/stu_suceess.jsp</result>    </action></package>action对象用来处理http请求<action name="userAction" class="com.action.UserAction">    <result>/user.jsp</result></action>name必须的属性,标识actionclass 可选属性,指定action的实现类method 可选属性,指定请求action时候调用的方法converter 可选属性,指定类型转换器的类result元素用来设置返回给浏览器的视图dispatcher 将请求转发到指定的jsp页面redirect 将页面重定向到指定的视图资源chain 处理action的链freemarker 指定使用freemarker模板作为视图httpheader 控制特殊的http行为redirect-action 跳转到其他的actionstream 给浏览器返回一个inputstream 一般用户下载文件velocity 指定使用velocity模板作为视图xslt 使用xml或者xslt整合paintText 显示某个页面的原始代码区分:dispatcher结果类型表示将http请求转发到指定的jsp资源redirect结果类型则是重定向到jsp资源,重定向则会丢失所有的请求参数和action的处理结果redirect-action结果类型生成的是一个action,而redirect结果类型生成的请求是一个jsp资源include元素用来包含其他配置文件当系统规模增大的时候,大量的action不方便编辑,使用include标签,模块化管理<struts>    <include file="a.xml"/>    <include file="b.xml"/>    <include file="c.xml"/>    <include file="d.xml"/></struts>global-results元素配置一个全局结果<struts>    <package name="default" namespace="/" extends="struts-default">        <global-results>            <action name="user" class="com.action.UserAction">                <result name="hello">/hello.jsp</result>            </action>        </global-results>    </package></struts>default-action-ref元素配置默认的action,找不到action使用它<default-action>    <action name="defaultaction" class="com.action.XXXAction">        <result></result>    </action></default-action>

action的动态调用

Action的动态调用action对象对于URL请求的处理都是调用其默认的execute()方法实际开发中,一个action可能有不同的请求,可以在execute()方法中判断请求逻辑来转发相应的请求DMI处理方式,在请求Action的URL地址后加上请求字符串,与action对象中的方法进行匹配.对象名称和方法之间用"!"隔开 如/user!change.action

通配符

通配符实际开发中会出现多个action都是相同的情况.使用通配符来通过一定的命名约定来配置action对象,达到简化定义action的目的]*表示匹配0个或者多个字符除了"/"**表示匹配0个或者多个字符包含"/"\ 表示转义字符<package name="login" extends="struts-default">    <!--使用*通配符,第一个表示调用方法,第二个表示action,{n}表示前面第n个*所匹配的字符串,{0}整个-->    <action name"*_*" class="com.coderdream.action.{2}Action" method="1"        <result name="success">/{0}.Suc.jsp</result>    </action></package><!--在上面的代码中,当请求是/update_Login.action时,<action>的name属性中第一*匹配update,第二个*匹配Login,所以会对应的调用LoginAction类中的update()方法.在记过映射中的几号是{0},则会该几号会被整个URL代替.所以返回的页面是update_LoginSuc.jsp-->通配符的常用使用方式<!--不管请求那个action,都会返回与该页面名字想听听的jsp页面--><action name="*_*">    <result>{0}.jsp</result><action>

常量配置

常量配置struts.properties用来配置常量struts.il8n.encoding=UTF-8struts.xml也可以用来配置常量 一般是在Struts.xml中配置,因为它的加载先于其他的<struts>    <constant name="struts.il8n.encoding=" value="UTF-8"/></struts>使用web.xml来配置常量<filter>    <filter-name>struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    <!--设置默认编码集-->    <init-param>        <param-name>struts.il8n.encoding</param-name>        <param-value>UTF-8</param-value>    </init-param></filter>

action类

Struts的Action类文件public interface Action{    public static final String Error="error";    public static final String Success="success";    public static final String Input="input;    public static final String Login="login";    public String execute() throws Exception;}因为自定义的action类继承了ActionSupport类,必须定义变量serialVersionUID.ActionSupport类实现了ActionSupport类实现了Serializable接口,所以必须声明变量serialVersionUIDprivate static final long serialVersionUID=1l;Struts访问servletAPI接口的方法在web应用中,HttpServletRequest,HttpSession,ServletContext这三个接口对应于jsp内置对象中的request,session,application1.通过ActionContext类访问servletAPIvoid put(String key,Object value): 将key-value存入到actionContext中object get(Object key):通过参数key来查找当前actionContext中的值map getApplication():返回一个application的Map对象Static ActionContext getContext():获取当前线程的ActionContext对象Map getParameters():返回一个包含所有的HttpServletRequest参数信息的map对象Map getSession():返回一个Map类型的HttpSession对象void put(Object key,Object value):向当前对象ActionContext对象中存入键值对信息void setApplication(Map application):设置Application上下文void setSession(Map session):设置Map类型的session的值2.通过特定接口访问:ServletRequestAware:实现该接口,访问httpservletrequest实例ServletResponseAware:实现该接口,访问httpservletresponse实例ServletContextAware:实现该接口,访问servletcontext实例public class LoginAction implements Action,ServletContextAware{    private ServletContext context;    public void setServletContext(ServletContext ctx){        context=ctx;    }    public Strng execute() throws Exception{        context.setAttribute("user","jim");        return SUCCESS;    }}3.通过ServletAction访问HttpServletResponseHttpServletRequestServletContext用户在提交http请求时,一般有2种方式:get/post使用post方式提交数据,不方便,使用Struts框架的接口ModelDriven接口public class XxxAction extends ActionSupport implements ModelDrivern<XXModel>{    private static final long serivalVersionUID=1L;    private xxModel x=new XXModel();//创建要使用的对象实例    public XXModel getModel(){        return x;    }    public String execute() throws Exception{        return SUCCESS;    }}//XxxAction类实现了ModelDriven接口,这样用户提交的关于XXModel类的信息,就会直接存入x对象中

异常处理机制

struts2框架的异常处理机制,在struts.xml文件中配置异常处理配置异常常用2种方式:全局异常配置,和局部异常配置即<global-exception-mappings><exception-mapping><struts>    <package name="default">        <!--全局结果-->        <global-results>            <result name="Exception">/Exception.jsp</result>            <result name="SQLException">/SQLException.jsp</result>        </global-results>        <!--全局异常映射-->        <global-results-mappings>            <exception-mapping exception="java.sql.SQLException" result="SQLException">            <exception-mapping exception="java.lang.Exception" result="Exception">        </global-results-mapping>    </package></struts>
0 0