本文共 4365 字,大约阅读时间需要 14 分钟。
Servlet 框架 Struts2
顺序: 需求 数据库表结构 编码CRM
第一感觉:
一堆 jar 包 --------- java文件------ 编译后 字节码文件 .class sun公司压缩技术 压缩成包 jar包Java文件实现一些功能
固定写法 : jdbc 打开数据 得到Rs 写好 打包, 不固定数据: 数据库连接地址、用户名、密码、驱动名称 写成配置文件 Hbm.xml hibernate.cfg.xml1、jar包
copy哪些jar? 2、写配置文件 看官方文档? 去试一试操作一下~~ 3、测试类1、java类 通过地址栏触发java类 java方法
2、从地址栏、页面 获取数据 GET POST 3、服务器端 进行处理 (增删改查) 调用其他java类 java方法 4、结果反馈给客户端(浏览器、手机)Struts 如何取代上面4点
如果能取代,学会了(不是精通)找了一下以前的例子
自己整理jar包
传统url
viewNews?newsId=10089 news/10089/view Rest 风格 news/list news/10089/update news/10089/delete如何接收地址栏的值
接收页面传递的值
三步走:
1 导入相关架包2编写web.xml,配置strus2过滤器
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2 /*
3编写Struts2配置文件struts.xml
通配:/success.jsp
访问路径 /user/regist.action
name 包名称,在struts2的配置文件文件中 包名不能重复 ,name并不是真正包名,只是为了管理Action namespace 和 action的name属性,决定 Action的访问路径 (以/开始 ) extends 继承哪个包,通常开发中继承 struts-default 包 (struts-default包在 struts-default.xml定义 ) 继承struts-default包后,可以使用 包中定义拦截器和结果类型 action元素配置默认值 package 的namespace 默认值‘’‘’ action 的class 默认值 ActionSupport 类 result 的 name 默认值 success默认Action 和 Action的默认处理类
1) 默认Action , 解决客户端访问Action不存在的问题 ,客户端访问Action, Action找不到,默认Action 就会执行 2) 默认处理类 ,客户端访问Action,已经找到匹配元素,但是元素没有class属性,执行默认处理类1) struts2 默认常量 在 default.properties 中配置
2) 开发者自定义常量struts.xml 格式 :struts.properties 格式 : struts.devMode = true web.xml 格式 : struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts.devMode true
3) 常用常量
----- 相当于request.setCharacterEncoding("UTF-8"); 解决post请求乱码 --- 访问struts2框架Action访问路径 扩展名 (要求)struts.action.extension=action, 默认以.action结尾扩展名 和 不写扩展名 都会分发给 Action false不缓存,true浏览器会缓存静态内容,产品环境设置true、开发环境设置false 提供详细报错页面,修改struts.xml后不需要重启服务器-
第一种
Action可以是 POJO ((PlainOldJavaObjects)简单的Java对象) —- 不需要继承任何父类,实现任何接口第二种
编写Action 实现Action接口 Action接口中,定义默认五种 逻辑视图名称 public static final String SUCCESS = “success”; // 数据处理成功 (成功页面) public static final String NONE = “none”; // 页面不跳转 return null; 效果一样 public static final String ERROR = “error”; // 数据处理发送错误 (错误页面) public static final String INPUT = “input”; // 用户输入数据有误,通常用于表单数据校验 (输入页面) public static final String LOGIN = “login”; // 主要权限认证 (登陆页面) 五种逻辑视图,解决Action处理数据后,跳转页面第三种
编写Action 继承ActionSupport (推荐) 这种方法能够使用 action中的 常量! 在Action中使用 表单校验、错误信息设置、读取国际化信息 三个功能1) 在配置 元素时,没有指定method属性, 默认执行 Action类中 execute方法
2)使用通配符* ,简化struts.xml配置添加客户删除客户struts.xml--- {1}就是第一个* 匹配内容
访问Action中指定方法,不进行配置
1) 在工程中使用 动态方法调用 ,必须保证 struts.enable.DynamicMethodInvocation = true 常量值 为true2) 在action的访问路径 中 使用 “!方法名”
页面添加商品struts xml配置执行 ProductAction 中的 add方法
1、 在Action 中解耦合方式 间接访问 Servlet API ——— 使用 ActionContext 对象
在struts2 中 Action API 已经与 Servlet API 解耦合 (没有依赖关系 )actionContext = ActionContext.getContext();
2、 使用接口注入的方式,操作Servlet API (耦合)
1.要求action类必须实现提定接口。 ServletContextAware : 注入ServletContext对象 ServletRequestAware :注入 request对象 ServletResponseAware : 注入response对象2.重定接口中的方法。
private HttpServletRequest request; 3.声明一个web对象,使用接口中的方法的参数对声明的web对象赋值.public void setServletRequest(HttpServletRequest request) { this.request = request;}
3、 在Action中直接通过 ServletActionContext 获得Servlet API
这种方法 尽量少用,尽量少去 直接访问 servlet
ServletActionContext.getRequest() : 获得request对象 (session)
ServletActionContext.getResponse() : 获得response 对象 ServletActionContext.getServletContext() : 获得ServletContext对象 ServletActionContext.getPageContext().getSession(); //获取session等对象转载地址:http://dwqen.baihongyu.com/