`
xchyou
  • 浏览: 28283 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts1.X学习笔记

 
阅读更多

 

 

Struts1.X学习笔记 8月28日

2009   

[在此处键入文档的摘要。摘要通常是对文档内容的简短总结。在此处键入文档的摘要。摘要通常是对文档内容的简短总结。] MVC框架以及标签的使用  

 

 

Structs1.x框架工作流程

方法介绍

Action是Struct父接口,其中里面的方法是public ActionForward

execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response){}

throws Exception

ActionForm是获取表单中的数据

ActiionForward是进行转向处理

工作流程

response

dispatch

response

request

JSP

 

 

Struts  Taglib(标签)

Struts 标签的配置和使用

配置:

* 在struts-config.xml文件中加入

<message-resources parameter="MessageResources" />

* 拷贝MessageResources.properties文件到src下

使用:

* 采用taglib指令引入

<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>  

<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%> 

 

Struts  常使用的标签如下:

<bean:write name=””>等同于request.getAttribute(“”)/或是request.getPrameatery(“”)

<logic:empty>   </logic:empty>

<logic:notEmpty name="attr3"></logic:notEmpty>

<logic:present></logic:present>

<logic:notPresent></logic:notPresent>是逻辑判断标记相当于if else

 

 

JSTL标签的使用(学习的重点,必须掌握)

简介:SUN的标准taglib库

Jsp标准标签库(jsp standard Tag Library,JSTL)

迭代和条件判断

数据管理格式化

XML操作

数据库访问

函数标签库

表达式语言(EL)

El隐式对象

存取器

运算符

EL实例如下:

<h1>测试EL表达式</h1><br>

<hr>

<li>普通字符串</li><br>

hello(jsp脚本):<%=request.getAttribute("hello") %><br>

hello(el表达式,el表达式的使用方法$和{}):${hello }<br>

hello(el表达式,el的隐含对象pageScope,requestScope,sessionScope,applicationScope,<br> 如果未指定scope,它的搜索顺序为pageScope~applicationScope):${requestScope.hello }<br>

hello(el表达式,scope=session):${sessionScope.hello }<br>

<p>

<li>结构,采用.进行导航,也称存取器</li><br>

姓名:${user.username }<br>

年龄:${user.age }<br>

所属组:${user.group.name }<br>

<p>

<li>输出map,采用.进行导航,也称存取器</li><br>

mapvalue.key1:${mapvalue.key1 }<br>

mapvalue.key2:${mapvalue.key2 }<br>

<p>

<li>输出数组,采用[]和下标</li><br>

strarray[2]:${strarray[1] }<br>

<p>

<li>输出对象数组,采用[]和下标</li><br>

userarray[3].username:${users[2].username }<br>

<p>

<li>输出list,采用[]和下标</li><br>

userlist[5].username:${userlist[4].username }<br>

<p>

<li>el表达式对运算符的支持</li><br>

1+2=${1+2 }<br>

10/5=${10/5 }<br>

10 div 5=${10 div 5 }<br>

10%3=${10 % 3 }<br>

10 mod 3=${10 mod 3 }<br>

<!--

==/eq

!=/ne 

</lt

>/gt

<=/le

>=/ge

&&/and

||/or

!/not

//div

%/mod

-->  

<li>测试empty</li><br>

value1:${empty value1 }<br>

value2:${empty value2 }<br>

value3:${empty value3 }<br>

value4:${empty value4 }<br>

value4:${!empty value4 }<br>

JSTL_核心库标签

<h1>测试jstl核心库</h1>

<hr>

<li>测试c:out</li><br>

hello(default):<c:out value="${hello}"/><br>

hello(el表达式):${hello }<br>

hello(default="123"):<c:out value="${abc}" default="123"/><br>

hello(default="123"):<c:out value="${abc}">123</c:out><br>

bj(defalut):<c:out value="${bj}"/><br>

bj(escapeXml="true"):<c:out value="${bj}" escapeXml="true"/><br>

bj(escapeXml="false"):<c:out value="${bj}" escapeXml="false"/><br>

bj(el表达式):${bj }<br>

<p>

<li>测试c:set和c:remove</li><br>

<c:set value="123" var="temp"/>

temp:${temp }<br>

<c:remove var="temp"/>

temp:${temp }<br>

<p>

<li>测试条件控制标签c:if</li><br>

<c:if test="${v1 lt v2}" var="v">

v1小于v2<br>v=${v }<br>

</c:if>

<c:if test="${empty v3}">

v3为空<br>

</c:if>

<c:if test="${empty v4}">

v4为空<br>

</c:if>

<p>

<li>测试条件控制标签c:choose,c:when,c:otherwise</li><br>

<c:choose>

<c:when test="${v1 lt v2}">

v1小于v2<br>

</c:when>

<c:otherwise>

v1大于v2<br>

</c:otherwise>

</c:choose>

<c:choose>

<c:when test="${empty v4}">

v4为空<br>

</c:when>

<c:otherwise>

v4不为空<br>

</c:otherwise>

</c:choose>

<p>

<li>测试循环控制标签c:forEach</li><br>

<table border="1">

<tr>

<td>姓名</td>

<td>年龄</td>

<td>所属组</td>

</tr>

<c:choose>

<c:when test="${empty userlist}">

<tr>

<td colspan="3">没有符合条件的数据!</td>

</tr>

</c:when>

<c:otherwise>

<c:forEach items="${userlist}" var="u">

<tr>

<td>${u.username }</td>

<td>${u.age }</td>

<td>${u.group.name }</td>

</tr>

</c:forEach>

</c:otherwise>

</c:choose>

</table>

<p>

<li>测试循环控制标签c:forEach,varstatus</li><br>

<table border="1">

<tr>

<td>姓名</td>

<td>年龄</td>

<td>所属组</td>

</tr>

<c:choose>

<c:when test="${empty userlist}">

<tr>

<td colspan="3">没有符合条件的数据!</td>

</tr>

</c:when>

<c:otherwise>

<c:forEach items="${userlist}" var="user" varStatus="vs">

<c:choose>

<c:when test="${vs.count % 2 == 0}">

<tr bgcolor="red">

</c:when>

<c:otherwise>

<tr>

</c:otherwise>

</c:choose>

<td>

<c:out value="${user.username}"/>

</td>

<td>

<c:out value="${user.age}"/>

</td>

<td>

<c:out value="${user.group.name}"/>

</td>

</tr>

</c:forEach>

</c:otherwise>

</c:choose>

</table>

<p>

<li>测试循环控制标签c:forEach,begin,end,step</li><br>

<table border="1">

<tr>

<td>姓名</td>

<td>年龄</td>

<td>所属组</td>

</tr>

<c:choose>

<c:when test="${empty userlist}">

<tr>

<td colspan="3">没有符合条件的数据!</td>

</tr>

</c:when>

<c:otherwise>

<c:forEach items="${userlist}" var="user" begin="2" end="8" step="2">

<tr>

<td>${user.username}</td>

<td>${user.age}</td>

<td>${user.group.name }</td>

</tr>

</c:forEach>

</c:otherwise>

</c:choose>

</table>

<p>

<li>测试循环控制标签c:forEach,普通循环</li><br>

<c:forEach begin="1" end="10">

a<br>

</c:forEach>

<p>

<li>测试循环控制标签c:forEach,输出map</li><br>

<c:forEach  items="${mapvalue}" var="v">

${v.key }=${v.value }<br>

</c:forEach>

<p>

<li>测试循环控制标签c:forTokens</li><br>

<c:forTokens items="${strTokens}" delims="," var="v">

${v }<br>

</c:forTokens>

<p>

<li>测试c:catch</li><br>

<%

try {

Integer.parseInt("asdfsdf");

}catch(Exception e) {

out.println(e.getMessage());

}

%>

<p>

<c:catch var="exinfo">

<%

Integer.parseInt("asdfsdf");

%>

</c:catch>

${exinfo }<br>

<p>

<li>测试c:import</li><br>

<c:import url="http://localhost:8080/struts_login"/>

<p>

<li>测试c:url和c:param</li><br>

<c:url value="http://localhost:8080/drp/sysmgr/user_add.jsp" var="v">

<c:param name="username" value="Jack"/>

<c:param name="age" value="20"/>

</c:url>

${v }<br>

<li>测试:redirect</li><br>

<c:redirect context="/struts_login" url="/index.jsp"/>

 

Jstl格式化标签的使用

实例

<li>fmt时间格式化</li><br>

    date(default):<fmt:formatDate value="${date}" var="d" /><br>

    d=${d}<br>

    date(type="time"):<fmt:formatDate value="${date}" type="time"/><br>

    date(type="date"):<fmt:formatDate value="${date}" type="date"/><br>

     date(type="both" ):<fmt:formatDate value="${date}" type="both"/><br>

     date(type="both" dateStyle="long"):<fmt:formatDate value="${date}" type="both" dateStyle="long"/><br>

     date(type="both" dateStyle="full"):<fmt:formatDate value="${date}" type="both" dateStyle="full" /><br>

     date(type="both"  timeStyle="full"):<fmt:formatDate value="${date}" type="both" timeStyle="full" dateStyle="full" /><br>

     date(type="both" pattern="yyyy-mm-dd hh-mm=ss" ):<fmt:formatDate value="${date}" pattern="yyyy-mm-dd hh-mm-ss" />

     <li>数字的 格式化</li><br>

     数字的格式化(default):<fmt:formatNumber value="${number}"></fmt:formatNumber><br>

     数字格式化(type="number"):<fmt:formatNumber value="${number}" pattern="###,###.0000"    type="number" maxIntegerDigits="10" maxFractionDigits="2" ></fmt:formatNumber>

    <br>数字格式化 (type="currency"):<fmt:formatNumber value="${number}" type="currency" var="m"></fmt:formatNumber><br>

    总共的金额是:${m}<br>

  百分比(pdate type="percent" ): <fmt:formatDate value="${pdate}" type="percent" var="p" pattern=".0000" />

${p}<br>

JSTL函数库(以及自定义函数库)

自定义函数的规则

jstl_fn自定义函数库:

1、定义类和方法(方法必须是public static)

2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下

3、在jsp中采用taglib指令引入自定义函数库

4、采用 前缀+冒号+函数名 调用即可

实例

<h4 align="center">jstl函数库的测试</h4>

    <li>和那书库的测试</li><br>

    hello(jsp 脚本):<%=((String)request.getAttribute("hello")).length() %> <br>

    helo(jstl函数库,函数调用必须在el表达式中 前缀+冒号+函数名):${fn:length(hello)}<br>

    list集合的长度:${fn:length(list) }

    <li>自定义和那书库的测试</li><br>

sayHello(自定义函数):${myfunction:sayhello(name)}

 

 

 

动态ActionForm(可以动态的获取页面提交的数据)

1、动态ActionForm

动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准

ActionForm的所有功能

* 在struts-config.xml文件中定义动态ActionForm,如:

<form-beans>

<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">

<form-property name="username" type="java.lang.String" />

<form-property name="age" type="java.lang.Integer"/>

</form-bean>

</form-beans>

*在Action中使用动态ActionForm,参见DynaActionFormTestAction.java 使用了DynaActionForm累中get的方法

DynaActionForm daf = (DynaActionForm)form;

String username = (String)daf.get("username");

Integer age = (Integer)daf.get("age");

注意:DynaActionForm是Struct1.x自带的一个类

动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值

动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}, 参见:dyna_actionform.jsp

动态Action的验证,通常使用动态验证框架validator

 

2、采用struts上传文件

* 页面的配置,如:

  <form action="upload.do" method="post" enctype="multipart/form-data">

  标题:<input type="text" name="title"><br>

  文件:<input type="file" name="myfile"><br>

  <input type="submit" value="提交">

  </form>

  * ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java

  * 在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,参见:UploadTestAction.java

  * 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>

 

 

3、空字段测试

* 在表单中没有input输入域,jsp脚本接收到的值为null,el表达式接收到的值为空串

* 如果表单中的值,没有输入,那么jsp脚本和el表达式接收到的值都为空串

4测试ActionForm类型的自动转换

* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false

* Date类型的转换:

* 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换

* 如果是java.util.Date,默认情况下struts无法转换

 

* 自定义转换器的实现步骤

* 实现converter接口,实现convert方法

* 将实现的conerter注册,通常情况采用servlet注册

* 采用servlet注册需要注意标签的配置,<load-on-startup>10</load-on-startup>(也可以采用struts plugin注册)

Struts对ActionForm的自动搜集过程:

  * 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值

  * 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性

    根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型

 

可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。

 

 5.ActionForward知识点复习

 

ActionForward的使用

 

1、理解全局和局部ActionForward的概念

2、redirect的使用

3、struts-config.xml文件不允许动态修改

4、理解动态ActionForward,动态的ActionForward是可以运行期修改的

 

 

 6.ActionMapping的复习

1、struts-config.xml文件中,每个<action>标签对应一个ActionMapping实例

2、了解<action>标签中的forward和unknown属性的含义

3、了解采用jstl和struts标签保持页面数据

 

7. 分布数据

 

8.struts 国际化

Java中的国家化问题

  1、了解缺省Locale是由操作系统决定的,Locale是由语言和国家代码组成

 

2、国际化资源文件是由baseName+locale组成,如:MessageBundle_en_US.properties

baseName是任意合法的文件名

 

3、native2ascii命令的位置和用法

* 位置:JAVA_HOME/bin

* 使用native2ascii.exe  o.properties MessagesBundle_zh_CN.properties

4.

eg

Locale defaultl=Locale.getDefault();

System.out.println(defaultl.getCountry());

System.out.println(defaultl.getLanguage());

ResourceBundle r=ResourceBundle.getBundle("res.MessagesBundle", defaultl);

System.out.println(r.getString("k1"));

System.out.println(r.getString("k2"));

MessageFormat mf=new MessageFormat(r.getString("k1"),defaultl);

Object[] o={"wulinbo","早撒谎那个好"};

System.out.println("使用国际化处理(动态处理的国际化 )"+mf.format(new Object[]{"吴林波","早上好"}));

System.out.println("使用国际化处理(动态处理的国际化 )"+mf.format(o));

Struts国际化问题

概念区分

硬编码国际化(指的是静态中文转换为其他的一种语言)

动态编码国际化(是指的是程序在运行期间的代码的国际化,可以使用占位符)

1、struts国际化的配置

* 在struts-config.xml文件中加入:<message-resources parameter="MessageResources" />

2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode

 

3、在jsp中采用<bean:message>标签来读取国际化消息文本

 

4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置

* 参见:ChangeLanguageAction.java 如下

String language=request.getParameter("language");

Locale defaultl=Locale.getDefault();

if(language.equals("CN"))

{

defaultl=new Locale("zh","CN");

}

else if(language.equals("US"))

{

defaultl=new Locale("en","US");

}

//使用struts中的方法 是一种session  HttpSession session =request.getSession()

//session.setAttribute("","");

request.getSession().setAttribute(Globals.LOCALE_KEY, defaultl);//import org.apache.struts.Globals;

//this.setLocale(request, defaultl);//使用Action中自己带的SetLocal来设置本地语言

return mapping.findForward("lanChange");

 

5、消息文本的国际化处理,共有三个步骤:

* 创建国际化消息

* 传递国际化消息

* 显示国际化消息

如何创建国际化消息?

理解ActionMessage和ActionMessages两个对象的区别

如何传递国际化消息?

* 调用saveMessage()传递普通消息,调用saveErrors传递错误消息

如何显示国际化消息?

通过<html:messages>标签显示消息(可以显示普通消息和错误消息)

通过<html:errors>

了解 使用JSTL标签中的fmt格式化标签来国家化

 首先在.jsp文件的头文件上添加

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<fmt:setLocale value="${header['accept-language']}"/>

<fmt:setBundle basename="res.MessageResources"/>

  其中properties文件放在res文件中

 

其次使用如下

<h1><fmt:message key="user.title"/></h1>

<hr>

<form action="login.do" method="post">

<fmt:message key="user.username"/>:<input type="text" name="username"><br>

<fmt:message key="user.password"/>:<input type="password" name="password"><br>

<input type="submit" value="<fmt:message key="user.button.login"/>">

</form>

 

struts异常处理

1、编程式异常

* 截获异常

* 创建相应的异常消息

* 传递异常消息

* 转向相应的页面处理异常

2、声明式异常(自动处理的异常)

* 在struts-config.xml文件中配置<exeception/>标签

* 理解局部和全局exception

* 注意局部<exception/>标签需要配置到<forward/>标签的前面,详见dtd中的约束

<exeception/>标签中的属性说明:

* key:指异常信息对应的国际化消息文本,这个key值需要在国际化资源文件中定义

* type: 处理那种异常

* path: 定义一但出现异常,需要转向那个页面,如果不定义path,

        默认情况下将使用<action>标签中input属性对应的页面

* scope:可以取值request和session,默认为request

* handler:异常的处理类,struts默认采用org.apache.struts.action.ExceptionHandler,

           如果做个性化的异常处理可以继承此类覆写相应的方法

           

参见:ErrorCodeExceptionHandler.java和AppExceptionHandler.java

           

DispatchAction应用

可以减少struts配置文件中的action量

如下例子:

配置文件

<action path="/user/userMaintent" type="edu.struts.actionextend.userAction" scope="request" parameter="command">

    <forward name="add_success" path="/user/add_success.jsp" />

      <forward name="del_success" path="/user/del_success.jsp" />

        <forward name="modify_success" path="/user/modify_success.jsp" />

</action>

userAction类处理

主要是继承了dispatchAction 该类

public class userAction extends DispatchAction {

 

public ActionForward add(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception {

// TODO Auto-generated method stub

//return mapping.findForward("add_success");

return mapping.findForward("success");

}

public ActionForward del(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception {

// TODO Auto-generated method stub

//return mapping.findForward("del_success");

return mapping.findForward("success");

}

public ActionForward modify(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception {

// TODO Auto-generated method stub

//return mapping.findForward("modify_success");

return mapping.findForward("success");

}

 

}

jsp页面的请求处理

<h3>使用dispatchAction可以减少action 配置量(模式匹配)</h3>

    <a href="user/ userMaintent.do?command=add">USER添加</a><br>

    <a href="user/duserMaintent el.do?command=del">USER删除</a><br>

     <a href="user/ userMaintent.do?command=modify">USER修改</a><br>

 

 

 

 

 

struts模式匹配

<!--模式匹配-->

     <action path="/user/*" type="edu.struts.actionextend.userAction" scope="request" parameter="command">

   <!-- <forward name="success" path="/user/{1}_success.jsp" />  -->

   <forward name="success" path="/{0}_success.jsp" />

      </action>

 

 

 

<h3>使用dispatchAction可以减少action 配置量(模式匹配)</h3>

    <a href="user/add.do?command=add">USER添加</a><br>

    <a href="user/del.do?command=del">USER删除</a><br>

     <a href="user/modify.do?command=modify">USER修改</a><br>

分享到:
评论

相关推荐

    struts 1.x学习笔记

    ### Struts 1.x 学习笔记 #### 一、MVC 概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用程序开发中非常常见。它将应用程序分为三个核心部分: 1. **模型(Model)**...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    学习Struts1.x需要理解其设计理念,掌握配置文件的编写,熟练运用Action、ActionForm、JSP标签,以及理解MVC模式在实际开发中的应用。虽然现在Struts1.x已经被Struts2等更新的框架所取代,但它的基础思想和设计模式...

    Struts1.x笔记

    Struts1.x学习笔记,struts1.x开放过程小技巧

    Struts1.x_Project.zip

    通过分析这个Struts1.x_Project,我们可以学习到如何配置Struts框架,理解ActionForm、Action、Struts-config.xml的作用,以及如何实现I18N和表单验证。同时,项目的数据库操作部分也是Java Web开发中重要的实践环节...

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    Struts1及14. Struts2学习笔记

    本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    传智播客struts2全程学习笔记

    ### 传智播客Struts2全程学习笔记 #### Struts2的优点 1. **无侵入式设计**:与Struts1相比,Struts2的设计更为先进,它不依赖于Servlet API或Struts API,这使得Struts2更加灵活且易于集成到其他环境中。在代码...

    计算机软件编程学习笔记.rar

    计算机软件编程学习笔记: 01. Unix note.txt 02. SQL note.txt 03. PL SQL note.txt 04. CVS note.txt 05. Core Java exercise.txt 05. Core Java note.txt 06. OOAD & UML note.txt 07. Xml note.txt 08. JDBC ...

    STRUTS经典笔记

    STRUTS经典笔记主要涵盖的是Struts 2.0版本,这是一个升级版,解决了Struts 1.x版本中的一些不足。 在Struts 2.0中,它继承了Struts 1.x的优秀特性,例如: 1. **MVC 2模型**:Struts 2.0 提供了一个强大的MVC架构...

    web学习笔记.docx

    在深入探讨Web开发的知识之前,我们首先了解一下"Web学习笔记.docx"的概要。这份文档显然包含了关于Web开发的学习笔记,可能涵盖了多种技术、框架和编程语言,如Java、JSP、Struts以及SSH(Struts、Spring、...

    Struts 1.3.8 学习笔记(一)

    首先,Struts 1.3.8 是 Struts 1.x 系列中的一个稳定版本,它引入了许多改进和修复,以增强性能和稳定性。这个框架的核心设计目标是将业务逻辑与表现层分离,通过 Action 和 Form Beans 实现控制器功能,同时利用 ...

    达内,tarena,struts笔记,strutsPPT课件,达内struts笔记

    在达内的培训课程中,这些笔记和PPT课件将深入讲解以上知识点,帮助学员系统地学习和掌握Struts 1.x框架的使用,提升其在企业级Web开发中的实践能力。通过学习,你可以理解Struts 1.x的核心概念,进一步提升你的Java...

    Struts1新手入门笔记(全)

    在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...

    Struts2.1学习笔记

    ### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...

    struts 2 学习笔记

    在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...

    struts2.1.8 学习笔记

    在Struts2.1.8中,学习笔记提到的一些关键知识点包括: 1. **环境配置**:开发Struts2应用需要配置JDK、Eclipse IDE以及Tomcat服务器。此外,还需要下载Struts2相关的jar文件,例如`struts-core-2.xx.jar`、`xwork-...

    Struts2.0学习笔记.doc

    Struts2.0是一个流行的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,类型转换是自动进行的,旨在帮助开发者处理请求参数与Action类属性之间的类型匹配问题。文档中的内容主要...

    MVC框架struts学习笔记

    Struts 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,主要用于构建可维护性高、结构清晰的Web应用程序。在Struts框架中,MVC模式帮助开发者将业务逻辑、数据处理和用户界面解耦,提高了...

Global site tag (gtag.js) - Google Analytics