struts1简介
什么是框架?(Framework)
框架是软件的半成品。用来解决以下几个问题:
1、设计模式问题——struts实现了MVC—Model2模式
2、代码重用
*****************************************************
一、Struts框架属于哪层技术?主要解决什么问题?
(1).Struts属于WEB层技术,主要用于替代Servlet。
(2).Struts主要用来解决一下几个问题:
1、获取用户提交的数据
2、对数据进行校验
3、国际化的处理
4、跳转
5、转发与重定向
6、页面的数据展示
****************************************************
二、Struts1框架由哪些部分组成?
1.jar包(在lib中)
2.一批文件(包括:struts-config.xml,tld文件-标签描述文件,validator-roles.xml 验证框架的配置文件),Struts1.3以后tld文件被添加入了jar包中
****************************************************
三、如何用IDE工具在项目中加入Struts框架?
在向导中设置:Struts config path:配置config文件路径:默认:/WEB-INF/struts-config.xml
Struts specification:选Struts版本信息
ActionServlet name:为action
URL pattern:为主控制器设置过滤哪些资源
Base package for new classes:为(国际化?)资源文件创建包
Default application resources:创建全局的资源文件默认名字:com.yourcompany.ApplicationResources.可以更改
****************************************************
四、Struts1的主控制器是什么?作用是什么? 如何配置?
Struts1的主控制器是个自启动的Servlet,他的配置如下:
在项目的WEB-INF中的web.xml文件中:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param> <!--为主控制器设置启动参数,加载配置文件,并对其进行解析 -->
<param-name>config</param-name> <!--当需要多个配置文件时,在多个文件中间用逗号隔开 -->
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup> <!--该主控制器设置为自启动,参数表示启动级别最高。0 -->
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern> <!--默认过滤所有.do结尾的请求 -->
</servlet-mapping>
****************************************************
五、Struts1的配置文件可以有几个?
可以有过个。多个配置文件之间以,间隔。
****************************************************
六、Action的作用?如何配置Action?
(1).Action用于替代Servlet,继承自org.apache.struts.action.Action。它继承自HttpServlet。
(2).在向导中设置:Path:用于配置前台表单提交的资源地址。不需要后缀即:.do。
例:前台请求:Hello.do 在此配置:/Hello。必须反斜杠开始。
Superclass:选择action继承的超类。
Action Type:你自定义的action的全名。例如:com,bluedot.web.actions.HelloAction
(3).struts-config.xml中的配置:
****************************************************
七、ActionMapping的作用?
****************************************************
八、ActionForm的作用?
****************************************************
九、ActionForward的作用?
****************************************************
十、主控制器的原理?ActionServlet的工作内容
class ActionServlet excends HttpServlet{
public void init(){
//容器启动时候,解析配置文件。Struts-config.xml
将数据存入List中。
List<ActionConfig> list= parse();
ServletContext sct=getServletContext();
sct.setAttribute("list",list);
}
// doget dopost方法,在该方法中根据配置文件调用execute()方法
public void doGet(HttpServletRequest request,HttpServletResponse response) throws Exception{
ServletContext sct=getServletCont();
List list=<list>sct.getAttribute("list",list);
for(ActionConfig config:list){
String uri=request.getRequestURI(); //该字符串为:Struts1Demo/Hello.do
//用请求的地址与ActionConfig中的数据进行比较,如果正确操纵对象的execute方法
if(uri.equals(request.getContextPath()+config.getPath()+".do")){
String type =config.getType();
Action action = Class.forName().newInstance();
ActionForward f=action.execute(mapping,form,request,response);
}
// 根据返回值来进行跳转,该步骤由主控制器来完成。
if(f.isRedirect){
// 如果是重定向方式则
response。sendRedirect(f.getURI());
}else{
request.getRequestDispatcher(f.getURI).forward(request,response);
}
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws Exception{
doget(request,response);
}
}
****************************************************