struts基本使用方法总结

一、使用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元素
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值