struts2学习笔记(1)
来源:互联网 发布:c语言编译步骤 编辑:程序博客网 时间:2024/05/27 16:42
1、解决struts2的中文乱码:
(1)请求为get方式:
在tomcat的server.xml中端口号一行添加URIEncoding=“GBK”
(2)请求为post方式:
在struts.xml的配置:
<constant name=”struts.i18n.encoding” value=”gbk”>
MySQL中解决乱码:
“jdbc:mysql://localhost:3306/user_db?userUnicode=”true&characterEncoding=utf-8”
2、action能够把从html页面中提交过来的文本(.txt)形式的内容转换为所需的格式。
3、进入action的方式有:表单、超链接、重定向、请求转发
4、Action接受请求参数:
(1)与ServletAPI 解耦的方式:
,Map map=ActionContext.getContext().getSession();
Map.put(“CurrentName”,user,getName)
(2)与ServletAPI耦合的方式:
与Servlet API解耦的访问方式
接受请求参数: String[]=ActionContext.getContext().getParameters().get("uname");
获取Session: Map<String,Object> session=ActionContext.getContext().getSession();
与Servlet API耦合的访问方式
获取application:ServletActionContext.getServletContext()
获取request:ServletActionContext.getRequest()
使用request再得到session
A——>B模式:
重定向:客户端跳转,由A——>B,此时地址栏变为B的地址
请求转发:服务器的跳转,由A——>B,此时地址栏仍为A的地址,页面的内容变为B的内容。
如果当B中仍需要用到A中的存的东西,要用请求转发。
Struts2架构剖析图
Struts2架构剖析(二):
1) 客户端向Servlet容器(如:Tomcat)提交一个请求。
2) 请求经过一系列过滤器,最终被核心控制器(StrutsPrepareAndExecuteFilter)所拦截。
3) 核心控制器把控制权委派给ActionProxy来代理。
4) ActionProxy通过ConfigurationManager读取struts.xml配置文件,从中获取action的相关信息。
5) ActionProxy创建一个ActionInvocation对象来负责调用Action。
6) ActionInvocation在执行Action之前,先依次调用和该Action关联的一系列拦截器。
7) Action执行完毕,ActionInvocation负责根据结果码字符串在struts.xml的配置中找到对应的返回结果,返回一个Result对象。
8) 和该Action关联的一系列拦截器再次被执行。
9) 发送响应到客户端
Struts2架构剖析简图:
Struts2拦截器:
拦截器概念:
三个方面看拦截器的概念
l 从软件构架上来说,拦截器是实现了AOP编程的组件。正是由于拦截器,将影响了多个业务对象的公共行为封装到一个个可重用的模块(方面),减少代码的重复性,实现功能的高度内聚,并确保了业务代码的整洁。另外,拦截器通过配置文件集成到框架中,实现了一种可插拔的设计,确保了框架的设计扩展性。
l 从功能上来说,拦截器就是struts2框架中在动态调用Action组件前执行拦截操作的组件对象。
l 从代码实现上来说,拦截器就是一个普通的Java组件,它需要实现一个名为Interceptor的接口,重写interceptor方法实现拦截功能。
拦截器的工作原理:
拦截器的执行过程是一个递归的过程,越是位于前面的拦截器越被先执行,但也是越晚退出。因此,拦截器的调用处理形成了“先进后出”的堆栈的模式,因此也叫拦截器栈。
Struts2拦截器——默认拦截器
struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器
只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器
如果没有为Action指定截拦器,则使用defaultStack作为默认截拦器栈
struts2框架内置了28个拦截器
如接受请求参数、类型转换、异常处理、文件上传等等
一旦为Action指定了截拦器,则默认截拦器不再起作用,必须显示指定默认截拦器.
Struts2标签库:
l 要使用标签,必须修改web.xml,让控制器拦截所有请求
<url-pattern>/*</url-pattern>
l Struts 2提供了功能强大的标签库,JSP页面导入标签库:
<%@ taglib prefix="s" uri="/struts-tags"%>”
l 设置用户界面主题,默认值为xhtml风格
<constant name="struts.ui.theme" value="simple"/>
UI标签:
标 签 说 明
<s:form>…</s:form> 表单标签
<s:textfield>…</s: textfield > 文本输入框
<s:password>…</s: password > 密码输入框
<s:textarea>…</s: textarea > 文本域输入框
<s:radio>…</s: radio > 单选按钮
<s:checkbox>…</s: checkbox > 多选框
<s:submit /> 提交标签
<s:reset /> 重置标签
<s:hidden /> 隐藏域标签
举例说明:
<%
List list=new ArrayList();
list.add(new Hobby(1,"游戏"));
list.add(new Hobby(2,"电影"));
list.add(new Hobby(3,"运动"));
request.setAttribute("ulist",list);
%>
<s:form action="user!reg.action" method="post" theme="simple" namespace="/">
用户名<s:textfield name="user.name" /><br>
密码:<s:password name="user.pwd" showPassword="true"/><br>
年龄:<s:textfield name="user.age"/><br/>
性别:<s:radio list="#{1:'男',2:'女'}" name="user.sex"/><br/>
爱好1:<s:checkboxlist list="#{'game':'游戏','music':'音乐','sport':'运动'}" name="user.hobby2"/><br>
爱好1: <s:select list="#attr.ulist" name="hid" listValue="hobby" listKey="id"/>
<s:submit value="注册"/>
</s:form>
- Struts2学习笔记(1)-Struts2概览
- STRUTS2学习笔记(1)
- struts2学习笔记(1)
- Struts2学习笔记(1)
- Struts2 学习笔记(1)
- Struts2学习笔记(1)
- struts2学习笔记(1)
- Struts2学习笔记(1)
- Struts2学习笔记1
- Struts2学习笔记1
- Struts2学习笔记(1)
- Struts2学习笔记(1)
- struts2学习笔记1
- struts2学习笔记1
- Struts2学习笔记1
- Struts2学习笔记(1)
- struts2学习笔记1
- struts2学习笔记1
- 文件访问权限
- 解读OBJ_KERNEL_HANDLE
- 三国志
- xml有哪些解析技术,及区别
- 如何从docker将image镜像到私有的registry
- struts2学习笔记(1)
- poj 2945 Find the Clones
- Tomcat的class加载的优先顺序一览
- Hadoop20140314-(1)
- 对象内存读取
- c语言常用宏
- struts1(10)----重数据库中取出数据显示在jsp页面上
- 列举游戏行业新手可参考的6大设计资源zz
- CS与BS联系区别