struts2学习笔记(1)

来源:互联网 发布:c语言编译步骤 编辑:程序博客网 时间:2024/05/27 16:42

1、解决struts2的中文乱码:

(1)请求为get方式:

tomcatserver.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耦合的访问方式

获取applicationServletActionContext.getServletContext()

获取requestServletActionContext.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>

0 0
原创粉丝点击