博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 基础开发---day01
阅读量:6421 次
发布时间:2019-06-23

本文共 8652 字,大约阅读时间需要 28 分钟。

 前言

我是一个小白,今天首次学习Struts的基本内容,是看视频和看书相结合的,主要是记录这个学习的过程以及学习的过程中遇到的问题。

-----------------------------------------------------------------------------------------------------------------------------------

传统的MVC分为servlet(控制器),Javabean(模型层),jsp(显示层)三个部分,Struts可以说是MVC的一个具体的实现,增加了ActionForm、Action和Struts标签库层。接下来用myEclipse开发第一个Struts程序,大致流程为:在hello.jsp页面通过文本框输入要显示的内容,然后提交到struts,如果内容为空,点击显示按钮,出现错误提示;如果不为空,struts将信息显示在页面上。

file--->new--->webproject,这里将名称取为strutstest,然后点击此项目右键,--->myEclipse--->Add Struts Capabilities,这里是添加了struts支持 。

 

点击finish之后在项目下可以看到struts-config.xml   web.xml  JavaEE的jar包以及Struts的jar包等。

删除原来的index.jsp  在Web-Root下新建一个hello.jsp

接下来新建ActionForm及Action。注意每一个处理类Action都要绑定一个ActionFrom。

选中刚刚的com.du.struts包--->new --->other ,再搜索Struts,选择Struts1.3下的struts1.3 From,Action&JSP

点击next

点击finish之后,配置文件里面的form-beans和action-mappings有新的内容。其中path表示提交的路径,input表示错误信息的显示页面。在web.xml里面的url-pattern是*.do,那么在hello.jsp里面的action就是hello.do.大体框架已经搭好了,下面就是进行逻辑上的操作。我把各部分的代码放在下面供参考:

1 <%@ page language="java" pageEncoding="UTF-8"%> 2  3 
4 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 5 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 6 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 7 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 8 9 10 11
12 13 14
hello.jsp15 16 17 18 19
20
21

${msg}

22
23
24 请输入信息:
25
26
27 28
1 
2 3 4
5
6
7 8
9 10
11
12
13
21
22 23 24
25 26
27
config Code
1 <%@ page language="java" pageEncoding="UTF-8"%> 2  3 
4 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 5 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 6 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 7 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 8 9 10 11
12 13 14
hello.jsp15 16 17 18 19
20
21

${msg}

22
23
24 请输入信息:
25
26
27 28
HelloJsp Code

 

1 /* 2  * Generated by MyEclipse Struts 3  * Template path: templates/java/JavaClass.vtl 4  */ 5 package com.du.struts.form; 6  7 import javax.servlet.http.HttpServletRequest; 8 import org.apache.struts.action.ActionErrors; 9 import org.apache.struts.action.ActionForm;10 import org.apache.struts.action.ActionMapping;11 import org.apache.struts.action.ActionMessage;12 13 /** 14  * MyEclipse Struts15  * Creation date: 07-20-201716  * 17  * XDoclet definition:18  * @struts.form name="helloForm"19  */20 public class HelloForm extends ActionForm {21     /*22      * Generated fields23      */24 25     /** info property */26     private String info;27 28     /*29      * Generated Methods30      */31 32     /** 33      * Method validate34      * @param mapping35      * @param request36      * @return ActionErrors37      */38     //ActionFrom类用于验证,info属性与表单提交的参数名称一致,并设置了setter和getter操作39     public ActionErrors validate(ActionMapping mapping,40             HttpServletRequest request) {41         ActionErrors errors=new ActionErrors();42         if(this.info==null||"".equals(this.info)){
//info的输入内容为空43 //保存错误信息,一个ActionErrors可以包含多个ActionMessage,44 //ActionMessage类的构造方法中需要传递一个指定错误信息的key,错误信息在ApplicationResource.properties中定义45 //资源文件不支持中文,会将中文自动转换为Unicode编码46 errors.add("info",new ActionMessage("error.info"));47 }48 return errors;49 }50 51 /** 52 * Method reset53 * @param mapping54 * @param request55 */56 public void reset(ActionMapping mapping, HttpServletRequest request) {57 // TODO Auto-generated method stub58 }59 60 /** 61 * Returns the info.62 * @return String63 */64 public String getInfo() {65 return info;66 }67 68 /** 69 * Set the info.70 * @param info The info to set71 */72 public void setInfo(String info) {73 this.info = info;74 }75 }
HelloFrom Code
1 /* 2  * Generated by MyEclipse Struts 3  * Template path: templates/java/JavaClass.vtl 4  */ 5 package com.du.struts.action; 6  7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 import org.apache.struts.action.Action;10 import org.apache.struts.action.ActionForm;11 import org.apache.struts.action.ActionForward;12 import org.apache.struts.action.ActionMapping;13 import com.du.struts.form.HelloForm;14 15 /** 16  * MyEclipse Struts17  * Creation date: 07-20-201718  * 19  * XDoclet definition:20  * @struts.action path="/hello" name="helloForm" input="/hello.jsp" scope="request" validate="true"21  */22 public class HelloAction extends Action {23     /*24      * Generated Methods25      */26 27     /** 28      * Method execute29      * @param mapping30      * @param form31      * @param request32      * @param response33      * @return ActionForward34      */35     public ActionForward execute(ActionMapping mapping, ActionForm form,36             HttpServletRequest request, HttpServletResponse response) {37         HelloForm helloForm = (HelloForm) form;// HelloFrom对象38         String info=helloForm.getInfo();//所有的输入内容从ActionFrom取出39         request.setAttribute("msg", info);//设置request的属性范围,另外每一个Action都需要一个跳转路径,到配置文件去设置40         return mapping.findForward("show");41     }42 }
HelloAction Code
1 error.info=\u8F93\u5165\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A\uFF01
Resource Code

不好意思,补充一下,那个hello.jsp里面的action是hello.do  写忘记了

写的过程中所犯的错误:

ActionFrom类里面的错误信息保存New Message 不是Messages啊

------------------------------------------------------------------------------------------------------------

在Action里面写一个输入长度不超过15的错误集合

1 /* 2  * Generated by MyEclipse Struts 3  * Template path: templates/java/JavaClass.vtl 4  */ 5 package com.yourcompany.struts.action; 6  7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 import org.apache.struts.action.Action;10 import org.apache.struts.action.ActionForm;11 import org.apache.struts.action.ActionForward;12 import org.apache.struts.action.ActionMapping;13 import org.apache.struts.action.ActionMessage;14 import org.apache.struts.action.ActionMessages;15 16 import com.yourcompany.struts.form.LalaForm;17 18 /** 19  * MyEclipse Struts20  * Creation date: 07-20-201721  * 22  * XDoclet definition:23  * @struts.action path="/lala" name="lalaForm" input="/lala.jsp" scope="request" validate="true"24  */25 public class LalaAction extends Action {26     /*27      * Generated Methods28      */29 30     /** 31      * Method execute32      * @param mapping33      * @param form34      * @param request35      * @param response36      * @return ActionForward37      */38     public ActionForward execute(ActionMapping mapping, ActionForm form,39             HttpServletRequest request, HttpServletResponse response) {40         LalaForm lalaForm = (LalaForm) form;// TODO Auto-generated method stub41         String info=lalaForm.getInfo();42         if(info.length()>15){
//输入内容过长43 ActionMessages errors=new ActionMessages();//定义错误集合,ActionErrors已被弃用44 errors.add("info", new ActionMessage("length.info"));//添加一个新的错误45 //保存错误,没有用saveErrors()方法,所以jsp里面的错误信息要修改,用
标签46 super.saveMessages(request,errors);47 return mapping.getInputForward();//跳转到input指定页面48 }else {49 request.setAttribute("msg", info);//设置request属性范围50 51 }52 return mapping.findForward("show");//进行页面跳转53 }54 }
Action Code
1 <%@ page language="java" pageEncoding="GBK"%> 2  3 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 4 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 5 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 6 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 7  8  9 10 
11 12 13
lala.jsp14 15 16 17 18
19

${info}

20
21 22
23
24

${msg}

25
26 27
28 请输入信息:
29
30
31 32
JSP Code

 

转载于:https://www.cnblogs.com/dublogs/p/7211570.html

你可能感兴趣的文章
一般杀毒软件检测病毒原理
查看>>
反射方法获取事件的委托链上的函数
查看>>
(转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
查看>>
【Cocos2d-x 017】 多分辨率适配全然解析
查看>>
kong k8s 安装 以及可视化管理界面
查看>>
对spring默认的单列模式的理解
查看>>
Android 自动化测试
查看>>
string 简单实现
查看>>
HTML5中音频视频标签使用
查看>>
C++注释规范
查看>>
Maven 搭建spring boot多模块项目
查看>>
违章查询免费api接口代码
查看>>
问题-DelphiXE10.2怎么安装文本转语音(TTS)语音转文本(SR)控件(XE10.2+WIN764)
查看>>
ICMP协议
查看>>
UVA 10881 - Piotr's Ants【模拟+思维】
查看>>
Android中View的事件分发机制——Android开发艺术探索笔记
查看>>
【Python】输出程序运行的百分比
查看>>
Ajax跨域问题的两种解决方法
查看>>
HUNAN Interesting Integers(爆力枚举)
查看>>
让WebRTC支持H264编解码
查看>>