Struts的几个基本概念
- struts是一个框架
- struts是一个web框架
- 框架提高了程序的规范的同时,也约束了程序员的自由
- struts是一个开源的框架
Struts为什么有?
因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和拓展/效率…,所以我们有必要用一个统一的规范来开发项目–>框架struts
Struts的运行原理
小队长本质上就是servlet
表单类需要继承ActionForm类,才是一个表单
Struts的快速入门案例(以用户登录验证来演示)
我们使用手动配置的方式来开发第一个struts项目
步骤:
1.先创建一个web工程
2.把struts的开发包引入到web工程
struts1.0jar包下载地址:
3.编写login.jsp页面
设置首页跳转
4.编写ActionForm(用户表单)和Action(小队长->登陆小队长)
UserForm.java
LoginAction.java
5.编写struts-config.xml文件,该文件用于配置action actionform,对应关系,跳转位置…,一般我们放在/WEB-INF目录下
6.编写welcome.jsp和err.jsp页面
7.在web.xml中配置总控制器ActionServlet
8.测试,ok
下面我们一起来看看struts细节的东西:
- 请求发出请求,转发给总控制器,总控制器根据struts-config.xml找到对应action节点,根据节点的name属性找到对应的form-bean节点
- 然后ActionServlet使用反射机制把表单类实例化,通时调用setter方法注入表单数据
- ActionServlet使用反射机制实例化并调用指定的action实例同时把表单实例传入execute方法
增加1.在登陆成功的页面西安市,登录成功后的人名
2.使用filter配合struts解决中文乱码
步骤如下:开发一个过滤器,并设置request.setCharacterEncoding(“utf-8”);
在web.xml中配置过滤器
3.struts-config.xml
scope指定ActionForm Bean的存在范围,可选取为request和session,默认为session
4.每个action都是单态,包括ActionServlet
单态是指:在整个程序运行过程中,始终是一个对象,
5.struts-config文件路径,不一定非放在/WEB-INF,可以自己放
6.问在一个项目中,可不可以有多个struts配置文件/
7.增加到数据库去验证该用户是否合法的功能
在mysql数据库中,增加一个用户表
创建domain对象
使用工具开发struts项目
1.用工具导入struts包,自动完成相关设置,我们手工配置struts-config.xml文件即可,这里我们还是使用登录验证系统来学习
开发步骤;
1.建立web工程
2.导入struts开发包
点击finish,就会自动的引入struts开发包和自动生成struts-config.xml和web.xml文件并完成一些配置
3.开发login.jsp
4.开发action和actionForm
5.手动配置struts-config.xml
6.开发ok.jsp和err.jsp
7.测试
从上面的开发过程,可以提高我们的开发效率
完全依赖myeclipse开发struts还是以用户登录验证来讲解
1.创建web工程
2.引入struts开发包(步骤同上)
3.开发login.jsp
4.开发action和actionForm
编写ok.jsp和err.jsp
编写业务逻辑测试
struts标签技术
jstl标签技术
Jstl(jsp standard tag library)jsp 标签库
为什么有?
以前的jsp文件有大量的<% %>java片段,jsp中有html标签+jsp标签+java片段->jsp很乱
提出:能不能把<%%>java片段用标签来替换->jsp页面就简结
解决之道–jstl
目前软件公司用不用jstl标签?
不同的公司要求可能不一样:一类公司要求jsp页面不能有任何java代码,还有一类公司没有必须的要求
jstl标签讲解
如果我们的域对象中有相同的属性名,c:out优先级是pageContext>request>session>application
导入jstl很简单
Apache Tomcat安装JSTL 库步骤如下:
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
菜鸟下载地址
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
然后选中两个jar包右键点击添加为库
然后在jsp头部引入要使用的任何库的 标签就可以了,现在可以开始使用jstl标签了。
以下附上jstl使用手册
jstl使用手册
在java ee规范中,存在三种标签
- 自定义标签
- jstl标签
- struts标签
jstl标签实际上可以独立完成标签任务
当struts设计者,在提供struts框架后,同时提供一套标签库,命名为struts标签
在实际开发中,jstl标签可以和struts混合使用
mvc结构->jstl
struts框架->推荐使用struts标签完成jsp页面
但是实际上两种标签可以相互补充
struts标签
struts框架提供一组非常丰富的框架组件,同时也提供了一组标签库用于和这些组件交互,主要包括六大类。
使用struts标签可以提高我们开发往回走那的效率和规范
struts标签手册
html标签
bean标签
logic标签
这类标签实际上就是普通html标签,struts设计者主要是为了和struts框架统一,对普通的html标签做了一个封装,本质仍然是html标签
说明:*.tld文件叫标签描述文件tag library description
引入struts的html标签库
<%@ taglib uri=“http://struts.apache.org/tags-html” prefix=“html”%>
struts第4讲
- 1.DispatchAction-分派action
全局跳转
- 2.DynamicForm-动态表单
使用动态表单可以更加灵活的使用表单,在某些不能确定表单类属性个数和类型的情况下,可以使用动态表单来解决问题- 1)普通表单actionForm是首先你需要定义这样一个类,然后配置到struts-config.xml中
- 2)动态表单完全依赖反射机制创建,所以不需要去定义表单类,直接在struts-config.xml中配置即可
快速入门
- Struts中的文件上传下载
- 内部留言板小项目
- mvc中如何上传文件