struts1学习笔记
Struts1学习笔记总结

Struts1学习笔记总结
Struts1 (1)
Struts1和Servlet的关系 (1)
创建第一个Struts1项目 (1)
例子1: (3)
总结重点:struts1的工作流程(基于MVC模式的) (7)
ActionForm和VO的区别:
一样的内容,不一样的作用
ActionForm只接收前台表单传来的数据
VO是conga后台提取的数据向前台传递
创建第一个Struts1项目
新建一个web项目,选择1.4即可
右键----MyEclipse----Add Struts Capacity
---------------Struts控制文件的路径
一.普通的Servlet的工作流程 (7)
二.Structs1的工作流程(和上面的对比记忆) (8)StFra bibliotekuts标签 (9)
Bean标签 (9)
html标签 (10)
logic标签(逻辑标记) (12)
i18n(国际化) (13)
Struts1
Struts1和Servlet的关系
Jsp+Servlet+Javabean
TLD(标签)
1)
2):显示信息
3):逻辑标签
struts-config.xml
Struts笔记

Struts概念4、struts是一个开源的框架1、为什么有Struts?2、Struts的好处为什么是Web层框架Struts原理手写一个Struts//定义属性【这里有一个规范:就是我们定义属性的时候,//应该和jsp页面的控件属性一样。
如果有人提出疑问:说表单的属性名是不是一定和控件名一样?//只要保证set 和get 方法与属性名存在关联】4.Action5.Filter处理中文乱码public class MyFilter1 extends HttpServlet implements Filter {public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {// TODO Auto-generated method stubarg0.setCharacterEncoding("utf-8");//设置接受的编码arg2.doFilter(arg0, arg1);//}public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub}}<!-- 配置过滤器 --><filter><filter-name>MyFilter1</filter-name><filter-class>com.mhy.filters.MyFilter1</filter-class> </filter><filter-mapping><filter-name>MyFilter1</filter-name><url-pattern>/*</url-pattern></filter-mapping>使用工具开发struts完全使用工具开发5.创建表单截图创建ActionMysqlJava EE 中三种标签标签的选择Struts jstl标签技术为什么有?Jstl标签的好处常用标签引入标签<% taglib %>Java EE 5 Libraries->jstl-1.2.jar->META-INF->c.tld案例讲解c标签c:out标签<%//这句话本应放在控制器中//如果我们的域对象中有相同的属性名,c:out 优先级是pageContext>request>session>applicationrequest.setAttribute("abc","你好1<a href=''>百度</a>") ;//session.setAttribute("abc","你好2") ;//application.setAttribute("abc","你好3") ;//pageContext.setAttribute("abc","你好4") ;User u=new User();u.setName("马海燕");u.setAge(30);request.setAttribute("user",u);%><c:out value="hello world"></c:out><h1>如何输出request/session/application/pageContext域对象的数据</h1><!-- escapeXml 用于指定按照html样式显示,默认为true【表示文本】false【html样式】 --><c:out value="${abc}" default="没有值" escapeXml="false"></c:out><h1>如何输出对象</h1><c:out value="${}"></c:out> ||<c:out value="${user.age}"></c:out><br/>${} @@ ${user.age*20}c:set 标签<body><c:set var="abc" value="你好!" scope="request"></c:set><%//上面的标签等价于//request.setAttribute("abc","你好!");%><c:out value="${abc}"></c:out></body>c:remove<body><%request.setAttribute("a","你好!中国。
Struts1几个知识点

Struts1几个知识点1:struts1的请求流程答:当视图中有表单提交时,通过表单的action属性传递提交的路径,一般以XXX.do结尾。
(1)当表单提交后容器(tomcat为例)会判断路径是否以.do结尾,如果是则转到中央控制器ActionServlet。
(2)再由web.xml中config找到struts1的struts-config.xml文件,在该文件中的action属性中查找path对应的值是否有前面视图中的请求路径(去掉.do),(3)如果有则判断此action中是否有name属性.(4)有则在struts-config.xml查找<form-beans>中有与name的属性值对应的FormBean类.(5)有则将视图提交的表单中的数据封装到该FormBean类中。
(6)此后在查找该action中是否有attribute键值,有则将封装好的FormBean对象放到以attribute的值为键,以该对象为值的键值对中,请求范围默认为session,但可以通过scope属性设置。
(7)之后,通过该action的type属性找到对应的类,再通过反射得到该类的对象并放到内存中。
(8)执行该类的execute方法,该方法中有四种参数,分别为:ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse,其中ActionMapping对象执行程序运行结束后反向问题,通过findForward(String name)方法去到struts-config.xml 中查找上述action中的forward属性中键name对应的文件,返回到该文件。
该方法中的ActionForm参数对象保存的即为上述经过封装的表单数据。
至此,struts1请求流程完毕。
2:解释为什么用formbean(ActionForm),如何用?答:当通过表单提交数据过多,获取就会变得繁琐和重复,在对应的应用控制器的execute方法中就得多次通过request.getParameter()方法获取表单中的数据。
struts1笔记

的实例。
public static ActionForm createActionForm(HttpServletRequest request, ActionMapping mapping, ModuleConfig moduleConfig, ActionServlet servlet) {
String attribute = mapping.getAttribute();
LoginForm loginForm=new LoginForm(); loginForm.setUsername("西门崔雪");
Байду номын сангаас
session.setAttribute("loginForm"loginForm)
ActionForm的底层代码
//获取ActionForm实例 -----
//获取ActionForm实例 ----3)检查该表单Bean的使用范围,查找在该范围内,是否已存在该Bean的实例。 如果已经存在,那么就重用该实例。 否则,就重新创建一个。 protected ActionForm processActionForm(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) {
private static ActionForm lookup String attribute, String ActionForm instance = nu HttpSession session = nu
if ("request".equals(sco instance = (ActionFo } else { session = request.ge instance = (ActionFo } return (instance);
Struts1_个人整理笔记

目标:熟练运用当前流行的java开源框架:Struts、Hibernate以及Spring来构建灵活、易于扩展的多层Web应用程序。
C/S:以数据库为中心B/S:多层架构才是真正的目的B/S多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。
✧呈现层(UI Layer/Presentation Layer)⏹Struts✧业务逻辑层(Business Layer)⏹Spring✧持久化层(Persistence Layer)⏹HibernateC/S两层模式,每个客户端需要安装软件,但C/S做的界面灵活性比较好。
何谓两层模式,因为很多业务逻辑都放到了前端(界面里都混了很多业务逻辑),另一方面数据库里有很多存储过程或触发器。
业务逻辑都用存储过程来实现,这是一个弊端Java就不会把业务逻辑放在存储过程里,一般将业务逻辑封装在中间件(java)中。
当然java 有时也会将业务逻辑放在存储过程里,这是从性能上来考虑,因为放在存储过程里,性能肯定会高一些。
B/S 三层模式,客户端通过浏览器来访问,不需要安装软件。
分层就来了,分层带来的影响就是粒度变细了,耦合度变低,复用度就提高了,扩展性能也好了,维护性也好了。
切换工作区间 file-switch Workspace WebRoot-New-other select a wizard MyEclipse-web-JSP(Basic templates)基本模板在Servlet中拿jsp页面的值,使用getParamter()在jsp页面中拿servlet值,使用getAttribute()当在web客户端发送请求时(点击submit),将请求传到web server(tomcat),tomcat负责找到你要请求的servlet(此处为TestServlet),此时servlet做什么呢,首先String userName = req.getParameter("userName");得到表单数据(通过http Request),然后UserManager userManager = new UserManager();调用业务逻辑,当然,业务逻辑方法将表单的值返回給servlet,返回查询结果后,servlet将结果设置到Request里面req.setAttribute("otherList", userList); 把userList设置到属性中,下一个页面才拿得到,接下来servlet会选择视图,将查询结果显示出来。
structs学习笔记

structs学习笔记(很详细,欢迎补充)时间:2008-03-11作者:佚名编辑:本站点击:2836 [评论]1. Struts是什么?答:1) Struts是一个开源框架,用于构建MVC架构Web应用程序;2) Struts是Jakarta项目的部分, 由Apache软件基金赞助;3) 通过使用Struts,你可在程序中清晰地分隔表现层和业务逻辑层;4) 通过提供广泛JSP标签库,Struts也提高了开发效率。
标签库解析和验证用户输入、错误处理以及国际化支持。
5) 我们将会向您展现如何使用Struts开发工具构建Struts的Web应用程序。
2. Struts资源答:为了学习更多Struts框架有关知识,请关注Struts官方网站以及用户向导: . /struts. /struts/userGuide/introduction.html3. MVC(model-view-controller)架构模式答:1) MVC架构模式在1980年由Smalltalk-80的图形用户界面库的开发者提出;2) 从此它在面向对象的用户界面和应用程序控制工具包中得到了广泛地应用,例如Struts,以及经过改良去满足特定平台需求,例如J2EE。
3) 根据MVC模式,一个软件组件(一个应用程序、一个模块等)应该将它商业逻辑和它的表现层分离;4. MVC的理由答:1) 对于相同的model你有超过一个view;2) 假如商业逻辑和它的表现层构建在一块,增加额外的view会导致相当大的中断以及增加组件的复杂性;3) 一个model有二个view的一个好的例子是一个银行应用程序,它可以通过互联网以及手机访问;4) 改变view的时候,你不希望每次改变model;5) view依赖于model,它显示给用户model的特定方面;6) 将view和model构建在一块,每次当你对view进行细小改动的时候,你不得不改动model;5. MVC模式答:这种分离可通过将组件分成以下层达到:. model层,实现商业逻辑;. view层,实现一个特定客户端类型的用户界面;. 有了这二层,我们可实现商业逻辑并且将它呈现给用户。
Struts1学习文档

什么是框架?(Framework)框架是软件的半成品。
用来解决以下几个问题:1、设计模式问题——struts实现了MVC—Model2模式2、代码重用*****************************************************一、Struts框架属于哪层技术?主要解决什么问题?(1).Struts属于WEB层技术,主要用于替代Servlet。
(2).Struts主要用来解决一下几个问题:1、获取用户提交的数据2、对数据进行校验3、国际化的处理4、跳转5、转发与重定向6、页面的数据展示****************************************************二、Struts1框架由哪些部分组成?1.jar包(在lib中)2.一批文件(包括:struts-config.xml,tld文件-标签描述文件,validator-roles.xml 验证框架的配置文件),Struts1.3以后tld文件被添加入了jar包中****************************************************三、如何用IDE工具在项目中加入Struts框架?在向导中设置:Struts config path:配置config文件路径:默认:/WEB-INF/struts-config.xmlStruts specification:选Struts版本信息ActionServlet name:为actionURL pattern:为主控制器设置过滤哪些资源Base package for new classes:为(国际化?)资源文件创建包Default application resources:创建全局的资源文件默认名字:com.yourcompany.ApplicationResources.可以更改****************************************************四、Struts1的主控制器是什么?作用是什么?如何配置?Struts1的主控制器是个自启动的Servlet,他的配置如下:在项目的WEB-INF中的web.xml文件中:<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>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup> <!--该主控制器设置为自启动,参数表示启动级别最高。
struts1笔记

沈阅斌StrutsMvc model1Jsp+ javabeanMvc model2Jsp+Servlet+javabeanWeb应用框架JsfM workSpringHibernate……..提供1.分层工作2.改进控制器(Action代替Servlet)a)自动获得客户端提交的参数b)数据类型转换,格式验证c)数据传递和请求转发d)………………3.试图标签库和表达式语言Struts2中mvc的组成:1.模型:Javabean,ejb2.试图:Jsp,…..3.控制器FilterDispatcher,Interceptors(拦截器),ActionsStruts1主控制器ActionServlet 处理*.do结尾的请求|VStruts-config.xml核心配置文件|v业务控制器ActionActionForm(????在struts2里有没有是个争议,把actionform和action合成action了) 模型用来接收客户端提交的参数Struts1的mvc组成1.模型Javabean,ejb,ActionForm2.试图Jsp3.控制器ActionServlet,RequestProcessor,Actions写的东西以前Servlet, jsp, javabean, web.xmlStruts2Action jsp javabean struts.xmlStruts1Action jsp javabean和actionForm struts-config.xml控制器的几个基本的工作1.接收数据Struts2 增加属性和为属性提供setter方法Struts1 提供ActionForm,在ActionForm中属性和getter setter方法2.传递数据Struts2 提供属性,并且把属性保存到属性中,以及为属性提供getter方法Struts1 跟Servlet相同,通过Request传递3.转发请求Struts2 返回字符串,配置Struts1 返回一个ActionForward对象Action元素的属性说明:Path: action的访问路径,以”/”开头Type: action的类型Name: action使用的actionForm的名字.与form-bean元素的name属性取值相同. Scope: action使用的actionform存在的范围,取值为Request或session;Attribute: a ction使用的actionform存在于某个范围内的key.如果不指定此属性,则key为Name属性的值.Validate: action使用的actionform的validate方法是否被调用true为调用,false则不调用Input: struts1框架验证客户端提交的数据格式,如果验证不正确,则把请求转发到此属性所指定的页面上;Forward元素的属性说明:Name: Forward的名字,与mapping.findForward方法传入的值相同.Path: 请求转发的页面路径Redirect: 请求转发方式.,false是服务器内部跳转,true是客户端重定向ActionFormReset 用actionform是把数据恢复到初始状态Getter/setterValidate 验证Struts1的执行流程:1.客户端发送*.do请求,由主控制器接收2.主控制器将请求的处理工作委托给RequestProcessor3.请求处理器根据访问路径寻找一个对应的ActionMapping对象.如果找到,继续执行.找不到则返回404错误.4.根据ActionMapping的信息,查找或者创建一个ActionForm对象.5.请求处理器调用ActionForm对象的reset方法.6.请求处理器调用ActionForm对象的setter方法.7.请求处理器调用ActionForm对象的validate方法.如果返回一个ActionError对象,并且包含错误信息,则将请求转发到action元素input属性指定的页面,反之,继续执行.8.查找或创建一个Action对象.9.调用Action对象的execute方法,执行action.10.请求处理器处理action返回的ActionForward结果.11.响应I18n为一个软件提供多种语言版本.国际化的处理步骤:1.创建资源文件,存放多种语言类型的内容.BaseName_Language.properties简体中文:zh英文:en如:Messages.properties 默认资源文件Messages_zh.propertiesMessage_en.propertiesBaseName相同的叫做同一组资源文件2.注册资源文件<message-resources rameter="com.briup.struts.Message" />3.使用资源文件<bean:message/>4.切换资源文件1)切换浏览器的设置2)要么就在页面上设置一个按钮Native2ascii 源文件目标文件如何确定资源文件?1.如果当前session中存放了Globals.LOCALE_KEY,那么根据session中存放的语言类型寻找一个对应的资源文件.Session.setAttribute(Globals.LOCALE_KEY,Locale.CHINESE);1)访问了struts框架,如果当前session中没有存放语言类型的话,struts框架会把客户端提交上来的语言类型放到session里面.2)通过程序去往session中存放一个语言类型2.如果session里面没有存放语言类型的话,根据客户端的语言类型寻找一个对应的资源文件.Request.getLocale();返回客户端语言类型ActionForm的子类型DynaActionForm: 动态的ActionFormActionDispatchAction: Action的子类解决问题:多个表单提交给同一个action的不同方法处理实现步骤:1.Action类继承DspatchAction,提供多个处理请求的方法.方法名自定义,参数列表和返回类型与execute方法相同.2.在struts-config.xml文件中,指定action元素的parameter属性,这个属性的取值为客户端提交的一个用于表示访问方法的参数名.3.客户端提交请求时,需要提交一个额外的参数,参数名为action元素的paramater属性的值.参数值为action类中的方法名.原理:DispatchAction根据客户端提交的方法名,通过反射机制调用对应的方法.LookupDispatchAction: DispatchAction的子类解决的问题:同一个表单多个提交按钮提交给同一个action的不同方法处理实现步骤:1.Action类继承LookupDispatchAction,实现getKeyMethodMap方法,这个方法返回一个Map,Map中的key为资源文件中的key,Map中的value为action中的方法名.2.描述action的时候指定action元素的paramater属性,其值为提交按钮的名字3.将按钮的值存放到资源文件中,key跟map里面的key一样,value是方法名4.表单提交按钮的值从资源文件获得.5.解决乱码问题原理:客户端提交一个按钮的值,LookupDispatch根据这个值从资源文件中找到一个对应的key,再根据这个key从map中找到一个方法名,然后通过反射调用此方法.MappingDispatchAction: DispatchAction的子类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struts1开发学习笔记
使用一个简单的例子记录struts1开发过程。
0、 描述
主要功能描述:
index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。
newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。
ProductAction.java 是处理逻辑的action
简单描述流程图:
1、 构建环境
在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add sruts
capapibality ,弹出界面,选择struts1.2支持。
如下图所示:
添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:
/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。
2、 代码编写
2)创建工具类Util.java,从数据库连接池中获得连接。
需要两个步骤
第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,
第二步:在util类中读取配置获得连接,util.java如下:
3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml
配置中内容。
EncodingFilter.java的内容如下:
4)修改web.xml,指定首页为index.jsp。
文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。
6)index.jsp中提到productAction.action?method=viewAddForm,需要在
在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm
10)searchProduct.jsp是查询结果界面,代码如下:
http://localhost:8080/StrutsTest即可访问。