`

初学Struts1 – hello word

    博客分类:
  • ssh
阅读更多

之前只学过Struts2,学过的版本有2.02.1的,在几次面试中都有被问到Struts1的,对于这些回答唯有说还没学过,心里很是好奇,也来瞧瞧。

本文是新手文章,属学习笔记,还望指教!

 

笔者使用的是MyEclipse集成的struts1.2

web.xml配置如下(配置说明已在注释中):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- struts1.2配置 -->
  <!-- 配置ActionServlet -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <!-- Struts应用程序的配置文件位置(相对路径),则默认值为/WEB-INF/struts-config.xml -->
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <!-- 设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。 -->
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <!-- 设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。 -->
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <!-- 
    	ActionServlet在服务器开启时加载的优先级,数值越低,越先加载。
    	大多数 Servlet是在用户第一次请求的时候由应用服务器创建并初始化,但<load-on-startup>n</load-on-startup>可以用来改变这种状况,该元素说明某个 Servlet在应用程序启动的时候就立即装入   Servlet,并初始化它。
    -->
    <load-on-startup>0</load-on-startup>
  </servlet>
  <!-- Struts所拦截的路径,即Struts要处理的请求路径。 -->
  <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 类代码(Hello World):

 

package bing.struts.action;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * struts1第一例hello world
 * @author bing
 * @version 2011-07-06
 *
 */
public class HelloAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try {
			String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
			request.setAttribute("msg", "hello " + name);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return mapping.findForward("index");
	}

}

  

Struts1是从Servlet中扩展出来的,用起来与Servlet有些相似,捕获参数用的还是HttpServletRequestgetParameter方法,而且还要处理中文乱码问题。

 

struts-config.xml配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
	<!-- 数据源元素,可以通过<set-property>设置driverClass、url、user、password等属性 -->
  <data-sources />
  	<!-- 子元素form-beans用来配置绑定到Action的各个FormBean的实例。每个FormBean实例用form-bans的子元素form-bean来定义。form-bean又分普通的FormBan和动态FormBean。 -->
  <form-beans />
  <global-exceptions />
  	<!-- global-forwards用于配置全局转发,struts首先会在<action-mappings>元素中找对应的<forward>,若找不到,则到全局转发配置中找。它包含0个或多个<forward/>元素。 -->
  <global-forwards />
  	<!--  该元素用于将Action元素定义到ActionServlet类中,它含有0到多个<action/>元素 -->
  <action-mappings >
  	<action path="/hello" type="bing.struts.action.HelloAction">
  		<forward name="index" path="/index.jsp"></forward>
  	</action>
  </action-mappings>
  	<!-- 该元素用来定义资源文件。 -->
  <message-resources parameter="bing.struts.ApplicationResources" />  
  <!--  该元素用于定义插件,可定义0到多个插件元素,最常见的plug-in为Struts的验证的插件 -->
  <!-- 
  <plug-in className=""></plug-in>
   -->
</struts-config>

 

struts-config标签中各元素的顺序是固定的,不可变换的。

笔者在网上找到了一篇struts1.2的配置文件struts-config.xml的详细教程,以上的注释说明来源于blogjava,原地址如下:

http://www.blogjava.net/amigoxie/archive/2008/01/03/172360.html

 

index.jsp:

 

...
${msg==null?'显示区域':msg }
<form action="hello.do" method="post">
    <input type="text" name="name" />
    <input type="submit" value="say hello" />
</form> 
...

   

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics