web框架-Struts開始

問題:

為什么有structs

作為一種框架(frameset)可以與傳統的mvc進行比較?

MVC是一種模式數據處理、顯示和數據輸入分開,來規范開發,但是卻又并不規范。可以這樣想:有三家公司,他們對于MVC有自己的理解和編寫方式所以編寫的方式卻又并不相同,這樣structs應運而生。

Structs是一種基于MVC的規范來進行開發。這樣再編程的過程中可以發現:

1.程序規范化了?

2.程序編寫效率高?

3.程序同時可維護性提高且可讀性增強。

但我們可以根據任何事物不能完全的原則,所以這樣的方法也有缺陷,這里就不細說了。

簡單的提以下幾點供讀者考慮:

?

下面是struts的關鍵點:

struts如果僅僅只是會用工具然后點擊生成,那樣只能叫“點”過,不能叫學過。

任何程序開發需要明白流程,只有真正的原理才能在使用工具時明白底層的調用關系,在后續的遇到一些需要“真功夫”時才能拿得出手。

?

整個用structs進行測試的開發步驟(注:整個程序考慮是struts1.3.10 ?struts2在此基礎上改進):

1.建立工程

2.引入jar包

3.建立登錄login.jsp提交相應的數據表單

4.編寫actionform和action(關于login)

5.編寫struct-config.xml?用于配置actionform對應關系和跳轉的位置

6.編寫跳轉成功頁面wel.jsp和失敗頁面error.jsp

7.配置web.xml進行配置關鍵的actionservlet

8.進行測試

?

核心代碼:

1.跳轉到主界面:index.jsp (這樣具有更好的保密性)

?

2.登錄界面login.jsp

3.增加表單actionform

 1 package com.ly.forms;
 2 
 3 //用戶表單,用于填充數據
 4 import org.apache.struts.action.ActionForm;
 5 
 6 public class UserForm extends ActionForm {
 7 
 8     //屬性定義(規范與jsp中的控件名一樣)
 9     private    String  username; 
10     private String passwd;
11     
12     public String getUsername() {
13         return username;
14     }
15     public void setUsername(String username) {
16         this.username = username;
17     }
18     public String getPasswd() {
19         return passwd;
20     }
21     public void setPasswd(String passwd) {
22         this.passwd = passwd;
23     }
24     
25 }

4.表單對應的action

package com.ly.actions;
//這是一個action 需要繼承action
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;import com.ly.forms.UserForm;public class LoginAction extends Action {//execute可被自動調用 類似servlet dopost()方法public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {// TODO Auto-generated method stub//把form強轉成對應的userform類UserForm userform=(UserForm)form;System.out.println("用戶名="+userform.getUsername()+"密碼="+userform.getPasswd());//return super.execute(mapping, form, request, response);//簡單驗證if(userform.getPasswd().equals("123")){//把用戶名放到request 對象域中request.setAttribute("username", userform.getUsername());//密碼123是合法用戶mapping 是直接返回actionServletreturn mapping.findForward("ok");}else{return mapping.findForward("err");}}//需要重寫一個方法
    
}

5.添加struts配置文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<!-- 配置表單 -->
<form-beans>
<!-- name 表單名字隨意 (小寫)  -->
<!-- type是表單的全路徑 -->
<!-- 配置struts 中action 與actionForm的關系 -->
<form-bean name="userForm" type="com.ly.forms.UserForm"/>
</form-beans><action-mappings>
<!-- 配置具體 action        其path:表示將來訪問url -->
<!--name: action與對應 actionForm的對應-->
<!-- path:action全路徑 -->
<action path="/login" name="userForm" type="com.ly.actions.LoginAction">
<!-- 這里配置跳轉關系 --><!-- name是結果名稱    path是轉發頁面 -->
<forward name="ok" path="/WEB-INF/wel.jsp"/>
<forward name="err" path="/WEB-INF/error.jsp"/>
</action>
</action-mappings>
</struts-config>

6.(省略wel.jsp 和error.jsp 只需簡單寫寫就行必要時再添加)

進行web配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><!-- 配置structs --><!-- 用actionServlet控制 --><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><!-- 指明  配置文件  strcts-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><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

?

struts配置細節

一個簡單的登陸測試

下面是流程的截圖(僅供參考):

?

actionServlet進行了實例化對象(反射機制),這樣才能對表單進行添加數據(actionform

注意?表單中的setget方法

通過actionservlet來明細整個流程會對整個流程更加清晰

?

考慮:在此基礎上增加在成功界面顯示登錄者的用戶名

但是會出現中文亂碼問題(在wel.jsp中添加語句并不會有太多的用?考慮:整個流程在actionservlet中已然已經把數據添加到表單了)

(考慮使用過濾器)--記得在web.xml配置過濾器

?主要代碼:

package com.ly.filters;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;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("utf-8");  //設置接收編碼arg2.doFilter(arg0, arg1);  //必須(否則停止前進)arg1.setContentType("/text/html;charset=utf-8");}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

?

在web.xml中添加  

效果:

以上僅是一個小的demo 僅供學習。

?

  日進一小步,月過一大步~~加油!!

轉載于:https://www.cnblogs.com/ly199553/p/5392349.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458831.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

加快上架方法

估計最近蘋果app應用上架的比較多&#xff0c;審核比較慢&#xff0c;現在一個app從提交到上架短則7&#xff0c;8天&#xff0c;長則2&#xff0c;3個星期。我在實際上線應用時&#xff0c;總結了一個簡單實用的小技巧&#xff0c;可以加快上架時間&#xff0c;最近使用這種方…

接口自動化測試 返回html,接口自動化測試實戰(更新完畢)

前言自動化沒練習的項目怎么辦&#xff1f;自動化已經成為測試的必備技能之一了&#xff0c;所以&#xff0c;很多想跳槽的測試朋友都在自學&#xff0c;特別是最實用的接口自動化&#xff0c;但是很多人因為沒有可以練手的項目而苦惱&#xff0c;最終導致缺乏實戰經驗&#xf…

Opencv 圖像增強算法 圖像檢測結果及代碼

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#x…

php Hash Table(四) Hash Table添加和更新元素

HashTable添加和更新的函數&#xff1a; 有4個主要的函數用于插入和更新HashTable的數據: int zend_hash_add(HashTable *ht, char *arKey, uint nKeyLen,void **pData, uint nDataSize, void *pDest); int zend_hash_update(HashTable *ht, char *arKey, uint nKeyLen, void …

山寨“餓了么”應用中添加菜品數量按鈕效果

山寨“餓了么”應用中添加菜品數量按鈕效果 本人視頻教程系類 iOS中CALayer的使用 最終效果&#xff1a; 山寨源頭&#xff1a; 源碼&#xff1a;&#xff08;此源碼解決了重用問題&#xff0c;可以放心的放在cell中使用&#xff09; AddAndDeleteButton.h 與 AddAndDeleteBu…

html間數據傳送,Express框架與html之間如何進行數據傳遞(示例代碼)

關于Node.js 的Express框架介紹&#xff0c;推薦看菜鳥教程的Express框架&#xff0c;很適合入門&#xff0c;這里不再贅述&#xff0c;這里主要講一下Express框架與html之間如何進行數據傳遞我采用的是JQuery的Ajax()向后臺傳參方式(url傳參)1、Type屬性為Get時&#xff1a;(1…

數字圖像去噪典型算法及matlab實現

圖像去噪是數字圖像處理中的重要環節和步驟。去噪效果的好壞直接影響到后續的圖像處理工作如圖像分割、邊緣檢測等。圖像信號在產生、傳輸過程中都可能會受到噪聲的污染&#xff0c;一般數字圖像系統中的常見噪聲主要有&#xff1a;高斯噪聲&#xff08;主要由阻性元器件內部產…

pat1100. Mars Numbers (20)

1100. Mars Numbers (20) 時間限制400 ms內存限制65536 kB代碼長度限制16000 B判題程序Standard 作者CHEN, YuePeople on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars.The numbers 1 to 12 on Earch is called "jan, feb, …

【USACO1.1】Broken Necklace

題意 一個環形項鏈&#xff0c;有rbw三種珠子&#xff0c;r代表red&#xff0c;b代表blue&#xff0c;w代表white&#xff0c;從任意一個位置斷開&#xff0c;兩端分別取珠子&#xff0c;同一端取的珠子要相同顏色&#xff0c;w可以染成想要的顏色&#xff0c;即既可當作r也可以…

html+注釋格式化,使用xml注釋來生成格式化的html輸出

我試圖從我在xml文件中的注釋中生成一個格式良好的html文檔。目前我有一個xml文件&#xff0c;用于生成xml表格的html列表。為了讓我添加有關表格的評論&#xff0c;我手動將注釋添加到輸出html文件中。使用xml注釋來生成格式化的html輸出我想如果可能將html代碼放在xml文件中作…

圖像增強-圖像銳化

圖像銳化主要影響圖像中的低頻分量&#xff0c;不影響圖像中的高頻分量。 圖像銳化的主要目的有兩個&#xff1a; 1.增強圖像邊緣&#xff0c;使模糊的圖像變得更加清晰&#xff0c;顏色變得鮮明突出&#xff0c;圖像的質量有所改善&#xff0c;產生更適合人眼觀察和識別的圖像…

[譯]git revert

git revert git revert用來撤銷一個已經提交了的快照. 但不是從項目歷史中移除這個commit, 而是生成一個新的commit, 老的commit還是保留在歷史項目里面的. 這樣做的好處是防止了項目丟失歷史. 用法 git revert <commit>生成一個新的commit, 撤銷老的<commit>的所有…

圖像二值化算法總結

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#xff…

html 替換反斜杠,在URL直接替換反斜杠反斜杠

我們有一個系統&#xff0c;基于Moodle的平臺&#xff0c;在這里的文件是這樣引用&#xff1a;在URL直接替換反斜杠反斜杠的http&#xff1a;// [服務器] /file.php/3/LR4/info/ index.html的現在&#xff0c;這個偉大的工程&#xff0c;但是我們的一些老師錯誤地使用落后的斜杠…

VMware橋接模式無法連網

2019獨角獸企業重金招聘Python工程師標準>>> #VMware橋接模式無法連網 在VMware上裝了個CentOS7&#xff0c;使用橋接模式連網&#xff0c;開始使用的時候沒有問題&#xff0c;可以正常上網。最近打開的時候發現上不了網了&#xff0c; 使用ifconfig查看也沒有分配到…

Java 7 中 NIO.2 的使用——第四節 文件和目錄

Files類提供了很多方法用于檢查在于你真正實際去操作一個文件或目錄。這些方法強烈推薦&#xff0c;也非常有用&#xff0c;也能避免很多異常的發生。例如&#xff0c;一個很好的習慣就是在你試著移動一個文件從一個地方到另一個地方的時候&#xff0c;先檢查文件是否存在。 檢…

計算機二級access知識點6,2019年計算機二級ACCESS考試知識點:關系數據模型

【導語】2019年計算機二級考試備考正在進行中&#xff0c;為了方便考生及時有效的備考&#xff0c;那么&#xff0c;無憂考網為您精心整理了2019年計算機二級ACCESS考試知識點&#xff1a;關系數據模型&#xff0c;歡迎大家的關注。如想獲取更多計算機二級考試的備考資料&#…

乘方取模計算(模冪計算)

乘方取模計算也稱為模冪計算&#xff0c;在密碼系統中經常使用&#xff0c;是不可缺少的。 使用本程序可以解HDU2035&#xff0c;只需要考慮輸入和輸出。 /** 乘方取模** 已知給定的正整數a、n和m&#xff0c;計算x的值&#xff0c;a^n x (mod m)。** 二分法用在這里也很有效果…

Moldflow中文版注塑流動分析案例導航視頻教程

http://item.taobao.com/item.htm?spma1z10.5.w4002-9510581626.18.30lDTO&id43054534418 QQ&#xff1a;2911984429 http://aidem.lingw.net/

Jaxb annotation使用

JAXB&#xff08;Java Architecture for XML Binding) 是一個業界的標準&#xff0c;是一項可以根據XML Schema產生Java類的技術。該過程中&#xff0c;JAXB也提供了將XML實例文檔反向生成Java對象樹的方法&#xff0c;并能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來…