Struts2中使用POJO对象存放form表…

来源:互联网 发布:java file类 api 编辑:程序博客网 时间:2024/05/09 06:32

Struts2中使用POJO对象存放form表单值

我们在开发项目的时候,页面表单项目可能非常多,如果按照以前的方式将表单值作为属性放在Action中,势必造成Action非常臃肿,而且从严格意义上讲在Action中将Form中的值设置到Entity中的做法本身也不符合MVC的规范(应该在Service中完成这一步)。因此,Struts2为我们提供了使用POJO对象存放表单值的方式。使用这种方式非常简单,也很容易理解,我们需要做的就是新建一个POJO类(简单的JAVABEAN),然后将原来写在Action中的Form表单属性及相应get\set方法,移到这个POJO类中,然后将这个POJO类作为属性放在Action类中。另外在页面上或验证文件中的表单控件的name属性中,加上Action中的POJO对象属性的名字.作为前缀。

例如:

我们过去的形式是

<input type="text"name="username" />

现在改为

<input type="text"name="registForm.username" />

其中的registForm就是POJO对象在Action中作成员变量的变量名。

      需要注意的是,如果我们的表单请求带有上传内容,那么Struts2隐含的那个uploadFileName也应该和上传的File对象一起放在POJO中。

 

SSH工程中的初始化Action

过去我们用JavaWeb开发项目的时候,往往喜欢直接调用后台的Service,调用的方式有许多,当时推荐的方式是先使用<jsp:useBean>动作声明并实例话一个后台的Service,然后通过<c:set>标签调用其get方法来获取数据库中的数据。但是用SSH开发项目时,Service中的DAO是被注入进去的,使用以前的方式在Service中将无法获取到DAO的实例。因此我们开发SSH工程有了另外一个实现模式,在请求所有需要查询数据库显示数据的页面时,不是直接请求这个jsp,而是先通过一个Action,这个Action调用Service,Service调用DAO查询到数据之后,将值设置到request中,然后再跳转到这个jsp,在jsp中直接从request中把通过Action查询到的值显示出来。这个Action我们称为初始化Action,一般起名字的时候用的是XxxInitAction这样的形式。

在使用了初始化Action之后,问题产生了,如果我们的主页就需要查询数据库该怎么办呢?聪明的你一定想到了,直接在web.xml中配置成以下形式不就可以了吗?

   <welcome-file-list>

      <welcome-file>XxxInitAction.action</welcome-file>

</welcome-file-list>

答案是错误的,因为这里的web.xml中的配置只支持jsp和html这样的页面,不支持Action的形式,于是我们又有了变通形式,还是将web.xml配置成我们常见的形式,例如

   <welcome-file-list>

      <welcome-file>welcome.jsp</welcome-file>

   </welcome-file-list>

然后再这个welcome.jsp中添加如下javascript,让它跳转到我们想要的Action就可以了。

<scripttype="text/javascript">

 window.location ='registInit.action';

</script>

 

Iframe框架嵌套页面的跳转问题

如果在页面中使用iframe框架标签嵌套了其他页面,在嵌套页面中的链接默认只跳转嵌套页面那一个区域的页面,也就是说这个页面不会全部跳转,这时,我们在链接的a标签中添加以下属性target="_parent"即可达到整个页面跳转的效果。

 

SSH中配置数据源

在JavaWeb的课程中,我们学习了数据源的配置,在SSH中,同样可以使用数据源。并且tomcat配置部分和学习JavaWeb时的内容完全一致。所不同的是在工程中和学习JavaWeb时的内容略有区别。

要使用数据源,我们首先需要到tomcat下配置数据源。配置方法我们再温习一下:

1、打开…\Tomcat6.0\conf路径下的context.xml文件,按照以下内容进行配置

<Context>

   <WatchedResource>WEB-INF/web.xml</WatchedResource>

      <Resource name="jdbc/yoyo" auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="30"maxWait="10000" username="root" password="123456"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/yoyo" />

</Context>

2、将mysql的驱动包拷贝到…\Tomcat 6.0\lib下

3、修改工程中的hibernate.cfg.xml文件,将原先自动生成的以下内容删掉

<propertyname="connection.username">root</property>

<propertyname="connection.url">

jdbc:mysql://localhost:3306/zuxiaPub

</property>

<property

name="dialect">org.hibernate.dialect.MySQLDialect

</property>

<propertyname="myeclipse.connection.profile">MySQL</property>

<propertyname="connection.password">123456</property>

<propertyname="connection.driver_class">

com.mysql.jdbc.Driver

</property>

添加下面的内容即可

<property name="connection.datasource">

java:comp/env/jdbc/yoyo

</property>

原创粉丝点击