struts開發步驟

引言

        上一篇博客我們只是簡單介紹了一下struts和它的工作原理,下面小編帶大家來看一下使用struts開發的具體步驟~~~

搭建環境配置

       1、  由於struts是對servlet的包裝,所以只能適用於web項目,我們新建一個web項目

       2、  引入必要的jar包

 


       3、  在WEB-INF文件夾下新建配置文件struts-config.xml。這個配置文件主要是配置我們定義好的ActonForm和Action。

             <form-bean>標籤中配置的是ActionForm的變量名和全名

             <action-mapping>標籤中配置的是各個不同的action的信息。

              <action>標籤中的各個屬性:path=”/”,

                                                                 type是action的全名,name是對應的ActionForm的變量名,

                                                                 scope可以配置成request和session,默認是session。

                                                               <forward>標籤中配置的要跳轉的頁面,默認redirect=”true”。當配置文件中既有同    名的局部的<forward>和全局的<forward>時,使用局部的。



       4、  配置web-xml文件

        配置Struts中的總控制器ActionServlet,把配置文件作爲一個實例化參數的值傳進來的。啓動優先級是0,就是最高的優先級,只要是大於等於0的整數都表示程序一啓動的時候就實例化好了servlet,將struts的action標籤內容放到了actionmapping中。由於<url-pattern>標籤中配置訪問的映射url,所以只要是後綴名爲.do的就可以

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   <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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
   
    <load-on-startup>2</load-on-startup>
  </servlet>


  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 

開發

       1、開發actionform

             1)建立一個類,繼承ActionForm

             2)註冊到struts-config.xml文件中,<form-bean>標籤

      實例:

               LoginActionForm

package com.bjpowernode.struts;

import org.apache.struts.action.ActionForm;

/**
 * 登錄ActionForm,負責表單收集數據
 * 表單的屬性必須和ActionForm 中的get 和set的屬性一致
 * @author xingyu
 *
 */
@SuppressWarnings("serial")
public class LoginActionForm extends 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;
	}

	
}

        需要在struts-config.xml文件中配置:

      <form-beans>
		<form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>
      </form-beans>

2、開發action

      1)建立一個類,繼承Action,重寫execute(ActionMappingmapping, ActionForm form,HttpServletRequest request, HttpServletResponseresponse)方法

      2)註冊到struts-config.xml文件中,修改<action>標籤信息

             Path:指明調用者(jsp)能通過中心控制器ActionServlt找到該Action

             type: 指明該Action的類名

             name: 該Action應用的ActionForm名稱

實例:

         LoginAction

package com.bjpowernode.struts;

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;

/**
 * 登錄Action
 * 負責取得表單數據、調用業務邏輯、返回轉向信息
 * @author xingyu
 *
 */
public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		LoginActionForm laf = (LoginActionForm)form;
		String username = laf.getUsername();
		String password = laf.getPassword();
		
		UserManager userManager = new UserManager();
		try{
			userManager.login(username, password);
			return mapping.findForward("success");
			
		}catch(UserNotFoundException e){
			e.printStackTrace();
			request.setAttribute("msg", "用戶把能找到,用戶名稱=【"+username+"】");
		}catch(PasswordErrorException e)
		{
			e.printStackTrace();
			request.setAttribute("msg", "密碼錯誤!");
		}
		return mapping.findForward("error");
	
	}

}

    需要在struts-config.xml文件中配置:

<action-mappings>
		<action path="/login"
				type="com.bjpowernode.struts.LoginAction"
				name="loginForm"
				scope="request"
				>
			<forward name="success" path="/login_success.jsp"/>
			<forward name="error" path="/login_error.jsp"/>
			
		</action>
</action-mappings>

3、建立jsp頁面

      1、login.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<form action="login.do" method="post">
		用戶名:<input type="text" name="username"><br>
		密碼:<input type="password" name ="password"><br>
		<input type="submit" value="登錄">
	</form>	
</body>
</html>

       2、login_success.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	${loginForm.username },登錄成功!
</body>
</html>

       3、  login_error.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	${msg }
</body>
</html>


 效果

 

 

 

 

 總結

 框架讓我們的系統層次清晰,耦合更松。學習框架,先從一個小例子開始吧!

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章