小记整个简单struts页面传值的动手流程中,个人的小感触。在所有的环境配置完成,其中包括开发软件(例如eclipse,myeclipse之流),tomcat8.0(如果和你的jar包有所冲突,可以适当的修改tomcat的版本),struts2.5的9个jar包。准备完成之后进行代码的书写,按照个人的理解首先配置所需要的数据,也就是所谓的Action类,这里类可以同过implements java的Action类,也可以通过extends Actionsupport类,不过都是需要重写或者实现接口中的excute方法。同时需要在Action类中实现参数的set和get方法,为了后面的页面值的获取和传递做好铺垫。当我们的Action完成之后,配置我们的web.xml文件.这是整个web的入口。除去头文件的配置,我们需要在其中配置完成的过滤器filter。可以用来检索需要发布的.jsp和.action文件
<filter>
<!-- 配置Struts2核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 配置Struts2核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 配置Filter拦截的URL -->
<filter-mapping>
<!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
<filter-name>struts2</filter-name>
<url-pattern>/*<url-pattern>
在这里发生了各种的问题,其中最早的问题是Struts2.5的core jar包位置发生了变化,与我在网上拷贝的org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter不同,利用ctrl+shift建查找StrutsStrutsPrepareAndExecuteFilter发现了其中的位置变成了org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter在这里如果过滤器设置错误在后面的运行则会报NoFoundExcaption,显示找不到相对应的过滤器,其次原本的设置的filter拦截url应该设置为通配/*较为简单,但是我在操作的过程中使用了Ajax,导致其被filter阻挡,而导致了无法加载进入web。所以我在这里将url修改成为*.action和*.jsp作为我的过滤url。到这里web发布的准备已经完成了。
然后开始我们的login.jsp页面的编写,注意因为涉及到值的传递,所以需要设置我们的字符编码。这次试用的是gb2312.也可以试用8859-1和uft-8编码集。只是需要注意在页面的字符集设置必须完全一样不然会导致中文的乱码现象产生。然后进入我们的form表单的编写。<form action="justname.action" method="post">在这里的form的表单元素统一为之前的action中的元素相同,并且名称需要一致,这里是对于html的学习,需要 自己补充。form表单的名字并不规定可以随便取,但是一定需要与后面的Struts.xml中的actionname相同。不然会导致页面传值无法进行,至于method的类型只是为了页面数值的安全考虑。到这里我们的login.jsp就完成了。考虑到程序的流程,现在我们开始struts.xml的配置
<constant name="struts.deMode" value="true" />
<constant name="struts.locale" value="zh_CN">
<constant name="struts.i18n.encoding" value="gb2312">
处理字符的乱码