struts基本使用方法总结

本文介绍了Struts框架的基本配置过程,包括web.xml文件的设置、Action配置文件(struts-config.xml)的内容及Action类的实现方式。展示了如何通过配置文件完成表单提交处理和请求映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用struts必须先配置web.xml文件

     web.xml包含一切映射联系,包含着Servlet映射、过滤器映射等,处理表单提交的一切信息。而struts也是基于Servlet的。可以出从以下配置文件看出来。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	version="2.4"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 中文编码过滤器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>com.jwy.tools.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>

<!-- Struts应用配置,在这里也可以配置多个模块的struts-config.xml -->
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>       <!--1.从这里可以看出struts也是一个Servlet-->
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>3</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>                                                <!--2.从这里让struts解析所有.do请求-->
	</servlet-mapping>

  <!--3.下面举个普遍的Servlet以示区别-->
 <servlet>
  <servlet-name>User</servlet-name>
  <servlet-class>com.jwy.servlet.User</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>User</servlet-name>
  <url-pattern>/User</url-pattern>  <!--解析User的请求,/是为了分段url中的User,必须要。该类处理的参数也是通过String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK");//避免乱码-->
 </servlet-mapping>
 
<!-- 欢迎页面 -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
归纳:可以看出Servlet采用的request传递参数,但是struts是采用form-bean,更加独立业务逻辑;

二、配置Action的*.xml文件

       不要以为struts-config.xml是struts自己带的。它只是一个Action的配置文件,对应着上面web.xml中config参数,可以自由命名。

<?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>
	<data-sources />
	<form-beans>
		<!-- 用户登录Form -->
		<form-bean name="userLoginForm" type="org.apache.struts.action.DynaActionForm">
			<form-property name="pwd" type="java.lang.String" />
			<form-property name="loginName" type="java.lang.String" />
			<form-property name="id" type="java.lang.Integer" />
			<form-property name="type" type="java.lang.String" />
			<form-property name="mail" type="java.lang.String" />
			<form-property name="pwd1" type="java.lang.String" />
		</form-bean>		
	</form-beans>
	<global-exceptions />
	<global-forwards/>
	<action-mappings>
		<!-- 处理用户登录页面请求类,必须继承下面三实现form-bean传递,对应上面的userLoginForm -->
		<action type="com.jwy.action.UserLoginAction" name="userLoginForm" path="/userLogin" scope="request">
			<forward name="index" path="/index.jsp" />
			<forward name="manager" path="/manager/manager.jsp" />
			<forward name="welcome" path="/stu/welcome.jsp" />
			<forward name="addStuInfo" path="/stu/addStuInfo.jsp" />		        </action>
	</action-mappings>
</struts-config>

三、实现action的类

1、业务逻辑单一,继承org.apache.struts.action.Action抽象类,实现excute()方法,不必覆盖它:

mport org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
public class UserLoginAction extends Action{
        public ActionForward excute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
          {
		DynaActionForm courseForm = (DynaActionForm) form; //提取出form-bean

		Course course = new Course();
		course.setName(courseForm.getString("name"));
		course.setSchooltime(courseForm.getString("schooltime"));
		course.setAddr(courseForm.getString("addr"));		
		courseDao.insert(course);
		mapping.findForward("index"); //上面配置文件的forward元素
	}
}


2、也业务不止一个,继承DispatchAction抽象类,它也继承Action,采用哪个业务逻辑由<action type="com.jwy.action.UserLoginAction" name="userLoginForm" path="/userLoginAction" scope="request"parameter=“first”>中的parameter和jsp中的<form action="userLoginAction?first=insert">的url参数决定的

mport org.apache.struts.action.DispatcherAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
public class UserLoginAction extends DispatcherAction{
        public ActionForward  insert(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
          {
		DynaActionForm courseForm = (DynaActionForm) form; //提取出form-bean

		Course course = new Course();
		course.setName(courseForm.getString("name"));
		course.setSchooltime(courseForm.getString("schooltime"));
		course.setAddr(courseForm.getString("addr"));		
		courseDao.insert(course);
		mapping.findForward("index"); //上面配置文件的forward元素
	}
}



### 关于Struts2框架的使用教程 #### 1. Struts2的核心概念 Struts2 是一个基于 MVC 设计模式的 Java Web 应用框架,它通过拦截器和 Action 映射机制实现了业务逻辑与页面展示的分离[^2]。这种架构不仅提高了代码的可维护性,还增强了组件间的复用能力。 #### 2. 配置环境 为了使用 Struts2 框架,需要完成以下准备工作: - 下载并引入必要的 JAR 文件到项目中。 - 创建 `struts.xml` 配置文件,并将其放置在项目的 classpath 中(通常位于 `/WEB-INF/classes/` 路径下)。 - 修改 `web.xml` 文件以注册 Struts2 的过滤器: ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` #### 3. 编写第一个程序 下面是一个简单的示例,演示如何创建一个基本Struts2 应用程序。 ##### (a) 定义 Action 类 Action 类负责处理用户的请求并将数据传递给视图层。以下是示例代码: ```java import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport { private String message; public String execute() { setMessage("Hello, Welcome to Struts2!"); return SUCCESS; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } ``` ##### (b) 配置 `struts.xml` `struts.xml` 文件用于定义 Action 和 Result 的映射关系。以下是配置示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="helloWorld" class="com.example.HelloWorldAction"> <result name="success">/helloWorld.jsp</result> </action> </package> </struts> ``` ##### (c) 创建视图文件 (`helloWorld.jsp`) 视图部分可以是 JSP 页面或其他模板引擎生成的内容。以下是 JSP 示例: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello World Example</title> </head> <body> <h1>${message}</h1> </body> </html> ``` 访问 URL:`http://localhost:8080/helloWorld.action` 将显示消息:“Hello, Welcome to Struts2!”。 #### 4. 核心功能扩展 除了基础的功能外,Struts2 还提供了一些高级特性来增强应用程序的功能,例如: - **拦截器**:允许开发者自定义请求处理流程[^1]。 - **国际化支持**:通过资源包实现多语言切换。 - **Token 机制**:防止表单重复提交问题。 - **异常处理**:集中管理运行时错误。 #### 5. 总结 通过以上步骤,可以快速搭建一个基于 Struts2 的简单 Web 应用程序。进一步的学习可以通过实践更多复杂场景下的功能实现,如动态方法调用、JSON 数据交互等[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值