Struts入门 lldwolf [原作]

来源:互联网 发布:erp软件下载 dg 编辑:程序博客网 时间:2024/05/01 04:43

需要的Struts包

从网上下载Struts的压缩包后,解开,把lib子目录下的所有.jar文件复制到自己应用程序的lib目录下。当然,或许有些用不到,但全放进来最起码不会出错。

web.xml配置文件

只要用Struts来搭建J2EE架构,web.xml的写法都差不多,我现在不用Struts的标签库,只用其最基本的功能,写法如下:

 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <display-name>Struts Example Application</display-name> <!-- Action Servlet Configuration --> <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> <load-on-startup>1</load-on-startup> </servlet> <!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- The Welcome File List --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 

也就是说所有以.do为后缀的请求都将发往org.apache.struts.action.ActionServlet,这个类包含在struts.jar中。 至于/WEB-INF/struts-config.xml,这是Struts用的配置文件,文件名和路径也可以由用户自定义,其实我写的这个是Struts的默认配置,即如果省略这个参数,Struts会自动把/WEB-INF/struts-config.xml作为配置文件,也可以指定多个配置文件,不同的配置文件以逗号","隔开。

struts-config.xml

我们由简到难,先做一个空的struts-config.xml,再逐渐往里加功能,代码如下所示:

 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <action-mappings> </action-mappings> </struts-config> 

在以下的步骤我们就可以看到,我们如些向这个XML文件添加内容。其实空的文件连<action-mappings>也没有,但是这struts-config.xml里面最基本的标签,所以我先加进去了。

实现最简单的页面跳转

也就是说,我们要实现这么一个动作,它只是简单地从一个页面跳到另一个页面,功能和HTML页面中的静态链接完全一样。我们先在index.jsp中创建这么一个链接:

 <a href="jump.do">点这里跳转到别的页面</a> 

然后在struts-config.xml中的<action-mappings>标签中加入如下<action>标签:

 <action path="/jump" forward="/success.jsp"> </action> 

OK,这个最简单的功能就实现了。其中,path属性表示客户端传来的链接请求,注意,这里并没有.do后缀。forward自然就是跳转的目标页面了。

使用Servlet

我们先实现一个最简单的Servlet,它只是返回一个字符串“Hello, I come back!”给客户端,其代码如下:

 //UseServlet.java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; public class UseServlet extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("test_value", "Hello, I come back!"); return mapping.findForward("return"); } }

Servlet必须是org.apache.struts.action.Action的子类并重载execute方法,execute方法返回一个org.apache.struts.action.ActionForward类,用于返回相应页面。在本例中我们使用mapping.findForward("return")来返回这个对象,至于字符串"return",过会儿你可看到,这是我们定义在struts-config.xml中的一个标识。

然后是定义struts-config.xml的<action-mappings>中的相应标签如下:

 <action path="/servlet" type="UseServlet" scope="request"> <forward name="return" path="/servlet_test.jsp"/> </action> 

其中type属性表示要使用的Servlet,scopen表示有效范围,值得注意的是<forward>子标签,其中的name属性"return"和servlet最后的mapping.findForward()的参数一致。

最后在index.jsp相应的加入:

 <a href="servlet.do">点这里使用Servlet</a> 

使用数据库

我们可以直接在struts-config.xml中的<struts-config>中指定数据库连接,方式如下:

 <data-sources> <data-source> <set-property property="autoCommit" value="false"/> <set-property property="description" value="Example Data Source Configuration"/> <set-property property="driverClass" value="sun.jdbc.odbc.JdbcOdbcDriver"/> <set-property property="maxCount" value="4"/> <set-property property="minCount" value="2"/> <set-property property="password" value=""/> <set-property property="url" value="jdbc:odbc:test"/> <set-property property="user" value=""/> </data-source> </data-sources> 

本例中我使用的是JDBC-ODBC数据库连接,你需要事先建一个名为test的ODBC连接。然后你就可以在Servlet中以如下方式得到数据库连接:

 javax.sql.DataSource dataSource = getDataSource(request); java.sql.Connection conn = dataSource.getConnection();

你可以在</data-sources>中定义多个数据库连接,例如:

 <data-sources> <data-source key="A"> ... properties as before ... </data-source> <data-source key="B"> ... properties as before ... </data-source> ... </data-sources>

然后以如下方式取得数据库连接:

 dataSourceA = getDataSource(request, "A"); dataSourceB = getDataSource(request, "B"); 
原创粉丝点击