Eclipse/JavaWeb (一)三大框架之struts框架 持續更新中...


最近主要把javaweb的三大框架過一遍。

(一)發展歷史

傳統的Java Web應用程序是采用JSP+Servlet+Javabean來實現的,這種模式實現了最基本的MVC分層,使得程序分為幾層,有負責前台展示的jsp、負責流程邏輯控制的servlet一級負責數據封裝的Javabean。但是這種結構仍然存在問題:如JSP頁面中需要使用<%%>符號嵌入很多的java代碼,造成頁面結構混亂,servlet和javabean負責了大量的跳轉和運算工作,耦合緊密,程序復用率低等等。

Struts

為了解決以上問題,出現了Struts框架,他是一個完美的MVC實現,他有一個中央控制類(一個servlet),一個action類負責頁面跳轉和后台邏輯運算,一個或幾個jsp頁面負責數據的輸入和輸出顯示,還有一個form類負責傳遞action和jsp中間的數據。jsp中可以使用struts框架提供的一組標簽,就像使用html標簽一樣簡單,但是可以完成非常復雜的邏輯。從此jsp頁面中不需要出現一行<%%>包圍的java代碼了。

可是所有的運算邏輯都放在struts的action里將使得action類復用率低和邏輯混亂,所以通常人們會把整個web應用程序分為三層,struts負責顯示層,它調用業務層完成運算邏輯。從此jsp頁面中不需要出現一行<%%>包圍的java代碼了。

(二)小例子

這里簡單介紹個關於struts框架的小例子。

首先,eclipse for java ee 工具,官網下載。

然后,struts2包,下載地址:http://www.pc6.com/softview/SoftView_108615.html 

進一步,在eclipse中新建dynamic web project,填寫project name,其他默認如下圖:

下一步,填寫編譯輸出路徑,默認為build\classes,可以改可以不改,默認即可。

下一步,勾選生成web.xml文件,finish。

一個dynamic web project就生成了,接下來加入相應jsp,action文件。

解壓struts包,把其中struts-2.3.15.1\lib下的幾個包拷貝到工程的WebContent/WEB-INF/lib目錄下,工程結構如下:

根據需要拷貝你需要的jar包到lib包下,然后改寫web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Login</display-name>
   <filter>
       <!-- 定義核心Filter的名稱 -->
       <filter-name>struts2</filter-name>
       <!-- 定義Filter的實現類 -->
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    
    <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
  <welcome-file-list>
   <welcome-file>Login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

首頁默認為Login.jsp。配置struts.xml文件,在src文件下創建struts.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="Login" class="action.LoginAction">
            <result name="success">success.jsp</result>  
            <result name="input">Login.jsp</result> 
        </action>
    </package>
</struts>

注:struts.xml文件一定創建在src目錄下,創建的web project默認src包在Java  Resources下,而不在WebContent/WEB-INF下。

在src下新建一個包action,在action下創建LoginAction.java文件:

package action;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
    private static final long serialVersionUID = 1L;
    public String loginName,password,message;
    
    public String execute() throws Exception
    {
        System.out.println("username:"+loginName+"; password:"+password);
        if ("admin".equals(loginName)&&"admin".equals(password)) {
            message=loginName+" Login Success!";
            
        }else {
            message=loginName+" Login Failed!";
            return INPUT;
        }
        return SUCCESS;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    

}

在WebContent目錄下創建Lgin.jsp和success.jsp文件:

Login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>Login</title>
</head>
<body>
    <div align="center">
        ${requestScope.message }
        <s:form action="Login" method="POST">
            <s:textfield name="loginName" size="20" label="username"/>
            <s:password word" size="20" label="password"/>
            <s:submit value="submit"></s:submit>
        </s:form>
    </div>

</body>
</html>

success.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Success</title>
</head>
<body>
    Login Success!
</body>
</html>
然后運行,輸入正確的用戶名和密碼:admin admin 提交

 

 

輸入錯誤的用戶名和密碼,提交:

登陸模塊算是簡單的完成。

 (三)。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM