struts(结构)是一个开源的web框架(frameset)
优点:程序更加规范,开发效率提高,程序可读性增加,程序可维护性增加
缺点:form表单有点不好,action是单态(影响网站并发性的处理),框架提过程序规范,约束程序的自由
struts-config.xml是struts的一个核心文件
struts组件一般包含:ActionServlet(总控制器),ActionForm(存放数据的表单),Action(分控制器),model(模型),jsp(页面)
struts开发一般步骤:
下载导入struts开发包
基础页面设计开发(jsp,业务功能界面)
开发ActionFrom和Action(servlet控制器)
配置struts-config.xml文件
友好界面设计开发(jsp,成功错误跳转页面)
在web.xml中配置ActionServlet
struts处理中文乱码问题(过滤器)
存放数据的表单类需要继承ActionForm抽象类,数据类中的成员函数设置获得属性值(set/get方法)必须与表单属性名(name属性值)相对应,一般为了方便数据类中的成员变量属性名与表单属性名(name属性值)一致
eclipse提示快捷键Alt+/
分控制器类需要继承Action类,并重写public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response)函数
struts-config.xml文件配置ActionForm与Action、以及对应关系、跳转位置,一般文件放在/WEB-INF目录下
struts-config.xml文件配置:
form-beans:配置表单
action-mappings:配置所有分控制器
action:配置分控制器
forward:配置跳转页面
web.xml文件配置:
mapping.findForward("指定页面的跳转名"); 跳转页面
提交表单数据后,总控制器通过反射机制实例化对应表单类,并调用相应的set方法存放表单数据
struts1的所有控制器(包括总控制器)都是单态的,即在整个程序运行工程中,始终是一个对象
jstl(jsp standard tag libaray)jsp标准标签库
优点:
提供应用程序服务器之间统一的接口,web应用可以在不同服务器之间移植
简化jsp在web应用程序中的开发
减少jsp中java片段甚至没有,代码更简洁
提高jsp开发速度,缩短开发周期
jsp使用jstl标签库需要下载相应的jar包,并在jsp开始部分引入
tld:tag library description标签库描述文件
<%@ taglib prefix="标签前缀(一般是c)" uri="对应标签的资源地址名(在对应的tld文件中)"%>
jstl标签分类:
一般标签:
相当于<%out.println(“内容/( (属性名)数据对象域.getAttribute(“属性名”) ).get变量名”) %> 不同对象域中相同属性名在c:out中的优先级从高到低pageContext,request,session,application
相当于<%数据对象域.setAttribute(“属性名”,”属性值”) %>
条件标签:
jsp可以有多个引入指令
[
多分支判断语句相当于switch,case,default语句
迭代标签:
判断变量是否为空的表达式:${empty/(!empty) 变量名}
url相关标签:
struts标签分类:
html标签:
struts的有信息输入的html标签需要放在表单标签(
get提交方式可以让浏览器收藏页面url地址时把url地址后面的参数一起收藏
struts的html标签与普通的html标签可以一起使用
多个过滤器执行顺序是根据部署顺序决定的
bean标签:
property不是根据成员变量名指定属性名,而是根据set属性名()和get属性名()中的属性名指定属性名
使用工具引入struts会自动生成资源文件ApplicationResources.properties,资源文件中存入参数的格式:
变量名={参数个数号(0到4)} 外部输入的参数根据参数号可以替换指定位置的参数
#号表示注释
资源文件中中文字符需要转换成ASCII码
jdk中ASCII码转换器在jdk安装目录下的bin\native2ascii.exe
logic标签
一般标签选择使用顺序是jstl标签,el表达式,struts标签
控制器action继承DispatchAction(分派控制器)用于处理一类请求,配置分派控制器是指定parameter属性名称,属性名称对应的值用于指定请求处理的函数
使用分派控制器函数名一般自定义,指定处理的函数是在跳转重定向时在url地址后面加入参数parameter属性名称=属性值(指定处理函数的函数名),默认不加参数会指定默认函数execute()进行处理
数据对象域.getSession().invalidate(); 设置所有session失效
数据对象域.getSession().removeAttribute(属性名); 设置指定属性名的session失效
action标签中的forward标签是局部跳转,这个forward只能被这个action使用
[
全局跳转,所有的action都能通过跳转名进行跳转
dynimic form(动态表单)不需要创建一个表单类直接在struts-config.xml中进行配置:
[
动态表单名.getString(“参数名”); 取出动态表单的指定参数名的参数值
动态表单名.get (“参数名”); 取出动态表单的指定参数名的参数对应的对象
表单中有文件控件需要重新指定表单的编码方式:
FormFile 文件名 定义表单文件变量
jsp页面文件输入
页面文件上传需要通过控制器将文件以流的形式存入服务器内存中
InputStream 文件流名称=FormFile.getInputStream(); 获得表单文件输入流对象
String 变量名=UUID.randomUUID().toString(); 获得一个不会重复的16进制数
int 变量名=字符串.lastIndexOf(“指定字符串”); 获得指定字符串在字符串最右边出现的位置
字符串.substring(开始位置(从0开始),结束位置(不包括结束位置)); 返回字符串从开始位置到结束位置的截取子字符串
上传文件名称中文乱码问题可以通过过滤器解决
response.setHeader(“Content-Disposition”,”attachment;filename=下载的文件名”); 下载文件时设置返回浏览器的响应信息,表示要下载文件
java.net.URLEncoder.encode(“中文字符串”,”编码格式”); 下载的文件名中文需要转换
所有文件类型种类可以在web.xml文件中查看