struts基本开发流程

本文介绍了使用Java Struts框架实现用户登录的具体步骤,包括创建Web项目、配置表单及动作映射、编写过滤器等内容。

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

通过用户登录的一个场景,介绍java struts的基本开发流程和工作过程。


1 创建一个j2ee的web project。



把struts包中的所有内容,拷贝到WEB-INF的lib文件夹中,使当前项目支持struts。


2 编辑一个带有form的jsp,如下:

    <form action="/strutslogin/login.do" method="post">
    	u:<input type="text" name="username"/><br/>
    	p:<input type="text" name="password"/><br/>
    	<input type="submit" value="login"/>"
    </form>



其中action的do,是在web.xml中配置,后面会介绍。


3 分别创建formAction文件和Action文件,可分别放置在不同的package中。

例如formAction起名为usrForm:

里面存放的是form jsp中,传递数据的控件的set 和get方法。需要继承ActionForm方法

private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}



Action文件,创建后要继承Action方法,并且要重写execute

public class LoginAction extends Action {
	//需要重写一个方法:execute会被自动调用,类似于servlet的service,doGet,doPost
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//吧form转换成userForm类对象
		usrForm usrform = (usrForm)form;
		System.out.println("用户名:"+usrform.getUsername());
		
		if(usrform.getUsername().equals("123")){
			System.out.println("用户合法");
			return mapping.findForward("ok");
		}
		else{
			return mapping.findForward("err");
		}
		
	}
		
}



将formAction实例化并 强转。根据xml的配置,返回的不同值。


4 根据需要,编写不同的跳转页,如welcome.jsp和error.jsp.


5 编写struts-config.xml文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Sorfware Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<!-- 配置表单 -->
	<form-beans>
		<!-- name是表单的名字,是表单类的小写.type是表单类的全路径。 -->
		<form-bean name="usrForm" type="com.sl.forms.usrForm"></form-bean>
	</form-beans>
	<!-- 配置action -->
	<action-mappings>
	<!-- 配置具体action path是表示将来访问该action的资源名称。name是对应的表单名称。 -->
		<action path="/login" name="usrForm" type="com.sl.actions.LoginAction">
		<!-- 配置跳转关系,name表示结果名称,path是转发到哪个页面。 -->
		<forward name="ok" path="/WEB-INF/welcome.jsp"/>
		<forward name="err" path="/WEB-INF/error.jsp"></forward>
		</action>
	</action-mappings>
</struts-config>


6 编写filter,处理中文字符。

filter是一个servlet,并且要实现接口Filter(javax.servlet),

public class myFilter1 extends HttpServlet implements Filter {

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		arg0.setCharacterEncoding("gbk");
		arg1.setContentType("text/html;charset=gbk");
		arg2.doFilter(arg0, arg1);
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}



注意每一个节点的内容:

这里的表单,是指formAction文件,配置的action则是带有form控件的jsp页。还要注意type的写法等。


7 配置web.xml


	<servlet>
	<servlet-name>action</servlet-name>
	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
	<!--配置struts-config  -->
	<init-param>
	<param-name>config</param-name>
	<param-value>/WEB-INF/struts-config.xml</param-value>
	</init-param>
	</servlet>
	<servlet-mapping>
	<servlet-name>action</servlet-name>
	<url-pattern>*.do</url-pattern>
	</servlet-mapping>
<span style="white-space:pre">	</span><filter>
 <span style="white-space:pre">		</span><filter-name>myFilter1</filter-name>
 <span style="white-space:pre">		</span><filter-class>com.sl.filters.myFilter1</filter-class>
 <span style="white-space:pre">	</span></filter>
 <span style="white-space:pre">	</span><filter-mapping>
 <span style="white-space:pre">		</span><filter-name>myFilter1</filter-name>
 <span style="white-space:pre">		</span><url-pattern>/*</url-pattern>
 <span style="white-space:pre">	</span></filter-mapping>


7 添加filter处理中文字符


基本流程完成,可根据输入内容,在action文件进行跳转或其他操作。



---------------补充:

在struts-config.xml中获取变量,<action >这个标签中的scope,有session和request两个值,表示该action的表单对象的存储范围,scope=request相当于 request= request.setAttribute("键名",value);

默认存储到session中。若scope = "request",则使用时:

((usrForm)request.getAttribute("usrForm")).getUsername() 

先强转成usrForm(表单名),然后通过get得到对象值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说我听海绵宝宝派大星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值