struts1的总结
一,所有视图层.do的请求都被struts的中央控制器actionservlet截获到,actionservlet会根据struts_config
.xml中的配置,把请求分发给相应的action进行处理,调用action中的execute方法,这个方法会返回给
actionservlet一个actionforward对象,actionservlet根据actionforward进行统一的跳转!!这里还有一些关于怎么读取配置文件的东西,可以看看前面的代码!
二,struts的搭建,
第一步,导入相应的架包,第二步,导入相应的配置文件,第三步,在web.xml文件中写入相应的文件,这个文件的写法都是一样的,这里我把代码贴出来,以方便以后的学习!
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
以上就是关于在搭建过程中的写法,以后复习的时候要注意!
三,action的写法
第一步,写一个类继承dispathaction,第二步,重写里面的execute方法!
四,actionMapping
就是一对action标签!
<action path="/changelan" type="com.daijianwei.action.LoginAction"> <forward name="success" path="/login.jsp"></forward> </action>
五,actionform(vo)设计膨胀dynaActionform
在这里需要注意的问题,在dynaActionform里面是用Map进行存储的,所以在拿出来的时候会提供两个方法,一个是getString() 第二个是getObject()第二个方法要进行类型的转换!这就是需要注意的地方!
六,actionform会自动保存在request或者session中
默认的是保存的是在session中,如果你需要拿出来的话,记住要写.map.username,另外你想保存在request中的话,只要在配置文件中加上scope="request",就可以了!
七,dispathaction 配置文件的parameter
需要注意的是,parameter中的command是可以写上不同的方法的!只要在配置文件中写上,parameter="command" 这样的一句话,就可以把所有关于这个模块的方法都写到一个action里面去!很是方便!
八,动态的actionforward 分页 的时候用到
只要在new 出来的时候你再setpath时,才可以有效果!如果直接的setpath的时,就有可能报错。这一点是非常需要注意的地方!
九,java的国际化,locale ResourceBundle MessageForm
这三个属性,前两个是在java.util包底下的,另外一个是在java.text底下的!是在java的国际化,locale是用于在语言和国家的填充,ResourceBundle是用于打印出来的!
MessageForm是用于栈位符的填充的!其中的代码,可以去看看上篇的日志,不在啰嗦!
十,国际化资源文件,struts_config.xml中告诉struts basename
<bean:message key="" args0="">在struts_config.xml中要告诉struts我的国际化资源文件的名字!其中的代码如下!
<message-resources parameter="MessageResource"></message-resources>
十一,如何在程序的运行过程中更改locale,struts中将locale放在session中,action中有this.setlocale
更改struts中的locale要用到判断来,还可以将构造方法来进行更改,更改后的结果放在session中,其中的this.setlocale(request,locale)其中的request是需要拿出session的!所以就要用到request!
(request,locale);
十二,动态的国际化消息文本的处理
在action中读取国际化消息
ActionMessages和actionErrors都是容器,仿的都是actionMessage(一条国际化消息
)
new ActionMessage(key,args)
在页面中获取<html:messages> <html:errors/>
十三,编程式的异常:每个异常都要写自己的异常类,每种异常读取的国际化消息也不一样<exception key=""
path="" type="">
有很多的异常类,代码看起来很多!
十四,个性化的异常:只有一个异常类,构造方法中的msg就是错误的提示信息
<global-exception>
<exception type="com.daijianwei.exception.GlobalException" key="error"
path=""></exception>
</global-exception>
读取国际化消息文本都是一样的error={0}只能是固定的文本,不能做国际化,但是只有一个类,代码非常的简
洁!