struts2--1.入门程序
来源:互联网 发布:mysql触发器 编辑:程序博客网 时间:2024/06/05 02:53
1 Struts2概述
1 struts2框架应用javaee三层结构中web层框架
2 struts2框架在struts1和webwork基础之上发展全新的框架
3 struts2解决问题:
4 struts2版本
5 web层常见框架
(1)struts2
(2)springMVC
2 Struts2框架入门
2.1 搭建Struts2基本环境
2.1.1 第一步 加入 jar 包:
在lib中有jar包,不能把这些jar都导入到项目中
复制 struts-2.3.31\apps\struts2-blank\WEB-INF\lib 下的所有 jar 包到当前 web 应用的 lib 目录下.
2.1.2 第二步 创建action
2.1.3 第三步 配置action类访问路径
2.1.3.1 创建struts2核心配置文件
- 核心配置文件名称和位置是固定的
- 位置必须在src下面,名称 struts.xml
2.1.3.2 引入dtd约束
2.1.3.3 或者
复制 struts-2.3.31\apps\struts2-blank\WEB-INF\classes下的 struts.xml 文件到当前 web 应用的 src 目录下.
2.1.3.4 action配置
/* * (1)每次访问servlet时候,都会执行service方法 * - 写类继承HttpServlet,重写类里面的方法 * - 在web.xml中配置servlet访问路径 * * (2)访问action,每次访问action时候,默认执行名称execute方法 * - 配置action访问路径 * */ public String execute() { System.out.println("action............."); return "ok"; }
访问路径:
http://127.0.0.1/struts2_day01/hello.action
2.1.4 第四步 在 web.xml 文件中配置过滤器:
复制 struts-2.3.31\apps\struts2-blank1\WEB-INF\web.xml 文件中的过滤器的配置到当前 web 应用的 web.xml 文件中
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
2.2 Struts2执行过程
画图分析过程
2.3 查看源代码
1 过滤器在服务器启动时候创建,创建过滤器时候执行init方法
(1)在init方法中主要加载配置文件
- 包含自己创建的配置文件和struts2自带配置文件
** struts.xml
** web.xml
2.4 Struts2的核心配置文件
1 名称和位置固定的
2 在配置文件中主要三个标签 package、action、result,标签里面的属性
<struts><!—1、包含的其他配置文件 --><!—include file=" " --><!– 2、定义struts常量--> <constant name="常量名称 " value="常量值 " /><!—3、定义bean --> <bean name="bean名称" class="" scope=" " static= " " option=" "/><!—4、定义包,package元素是Struts配置文件的核心 --> <package name="struts-default" extends="" namespace="名称空间" abstract="" externalReferenceResolver><!—5、定义返回值 --> <result-types> <result-type name="" class="" default="true|false"> <param name="参数名" >参数值</param> </result-type> </result-types><!—6、定义Action --> <action name="用户请求名" class="Action实现类" method="调用Action类的方法" > <result name="Action定义的结果名">物理视图地址 </result> </action> <!—7、定义拦截器 --> <interceptors> <interceptor name="" class=""/> <interceptor-stack name=""> <interceptor-ref name=""/> </interceptor-stack> <default-interceptor-ref name="defaultStack"/></interceptors> </package></struts>
2.4.1 标签package
1 类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能 配置action
2 package标签属性
(1)name属性
- name属性值根功能本身没有关系的,
- 在一个配置文件中可以写多个package标签,name属性值不能相同的
(2)extends属性
- 属性值固定的,struts-default
- 写了这个属性之后,在package里面配置的类具有action功能
(3)namespace属性
- namespace属性值和action标签里面的name属性值构成访问路径
2.4.2 标签action
1 action标签配置action访问路径
2 action标签属性
(1)name属性
namespace属性值和action标签里面的name属性值构成访问路径
在package标签里面写多个action标签,但是action的name属性值不能相同的
(2)class属性
action全路径
(3)method属性
比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
让action里面多个方法执行,使用method进行配置
2.4.3 标签result
1 根据action的方法返回值,配置到不同的路径里面
2 result标签属性
(1)name属性
- 和方法返回值一样
(2)type属性
- 配置如何到路径中(转发或者重定向)
- type属性默认值做转发操作
2.5 Struts2常量配置
1 struts2框架,帮我们实现一部分功能,struts2里面有常量,在常量里面封装一部分功能
2 struts2默认的常量位置(记住)
3 修改struts2默认常量值
(1)常用的方式
- 在struts.xml中进行配置
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
(2)还有两种方式(了解)
- 在src下面创建 struts.properties,进行修改
- 在web.xml进行配置
4 介绍最常用常量(明天演示)
(1)表单提交数据到action里面,在action可以获取表单提交数据,
(2)表单提交数据有中文,有乱码问题,解决:
- post提交直接设置编码
- get提交做编码转换
(3)如果在action获取表单通过post方式提交中文,中文乱码问题帮解决了,不需要自己处理问题
2.6 分模块开发
1 单独写配置文件,把配置文件引入到核心配置文件中
2.7 Action三种编写方式
2.7.1 第一种 创建普通类
这个不继承任何类,不实现任何接口
2.7.2 第二种 创建类,
实现接口 Action
public classUserAction implementsAction{ @Override public String execute() throws Exception { return null; } }
源代码:
默认执行execute()方法
public interface Action {public abstract String execute() throws Exception; //执行成功,返回成功界面public static final String SUCCESS = "success";//执行成功,不需要返回成功界面public static final String NONE = "none";//执行失败,eg:信息验证失败 public static final String ERROR = "error"; //根据输入信息比如页码跳转 public static final String INPUT = "input"; //Action验证失败重新登录 public static final String LOGIN = "login"; }
2.7.3 第三种 创建类—常用
继承类ActionSupport(一般使用)
//继承类public classPersonAction extends ActionSupport{ }
2.8 访问action的方法(重点)
1 有三种方式实现
第一种 使用action标签的method属性,在这个属性里面写执行的action的方法
第二种 使用通配符方式实现
第三种 动态访问实现(不用)
2 演示错误
(1)如果action方法有返回值,在配置文件中没有配置,出现错误
(2)在action里面的方法有返回值,如果有返回值时候类型必须是String
(3)action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
- 把方法写成void
- 让返回值,返回 ”none”
2.8.1 使用action标签method属性
1 创建action,创建多个方法
public classBookAction extends ActionSupport{ //添加 public String add() { System.out.println("add.............."); return NONE; } //修改 public String update() { System.out.println("update.............."); return NONE; }}
2 使用method配置
缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action
2.8.2 使用通配符实现(重点)
在action标签里面name属性,name属性值里面写 符号 * 星号
* 理解: 表示匹配任意内容
比如访问hello,* 可以匹配到;比如访问add,* 可以匹配到
被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用. {1} 匹配第一个子串, {2} 匹配第二个子串…{0} 匹配整个 URI
<!-- 通配符方式实现 --> <package name="tongdemo" namespace="/"extends="struts-default"> <!-- name属性值里面写符号 * (1)执行action里面的add方法,访问 book_add,使用book_*可以匹配到,*相当于变成 add (2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成 update 上面两个路径使用 book_* 可以匹配到 method属性写*值 --> <action name="book_*"class="struts.action.tongpeifu.BookAction"method="{1}"> </action> </package>
2.8.3 动态方法—了解,基本不用
Action执行的时候并不一定要执行execute方法,可以在配置文件中配置Action的时候用 “method=”来指定执行哪个方法,也可以在url地址中动态指定(动态方法调用DMI)(推荐)
Jsp:
<ahref="/user/userAdd">添加用户</a>
<ahref="/user/user!add">添加用户</a>
前者会产生太多的action,所以不推荐使用
struts.xml:
<constant name="struts.devMode"value="true" /> <package name="user"extends="struts-default" namespace="/user"> <action name="user" class="struts2.user.action.UserAction"method="add"> <result>/user_add_success.jsp</result> </action> <action name="user" class="struts2.user.action.UserAction"> <result>/user_add_success.jsp</result> </action> </package>
2.9 案例-客户列表
action:
public classCustomerAction extends ActionSupport { //客户列表 public String list() { //调用service CustomerServiceservice = newCustomerService(); List<Customer>list = service.findAll(); //放到域对象里面(明天讲到) HttpServletRequestrequest = ServletActionContext.getRequest(); request.setAttribute("list", list); return "list"; }}
Servive:
public classCustomerService { public List<Customer>findAll() { CustomerDaodao = newCustomerDaoImpl(); return dao.findAll(); } }
struts.xml:
<package name="demo" extends="struts-default"namespace="/"> <action name="customer_*" class="cn.itcast.action.CustomerAction" method="{1}"> <result name="list">/jsp/customer/list.jsp</result> </action> </package>
源代码文件:http://download.csdn.net/detail/qq_26553781/9774592
- struts2--1.入门程序
- struts2入门(登陆程序)
- struts2入门程序
- struts2的入门程序
- struts2的入门程序
- struts2入门程序(一)
- Struts2入门第一个程序HelloWorld
- struts2环境搭建和入门程序
- 模仿Struts2流程写QuickStart入门程序
- 1.struts2入门
- 1. struts2快速入门步骤
- struts2入门 eclipse 配置 编写 struct2 登录程序
- 【Structs2】Struts2入门之hello world程序的跑通
- 关于struts2的入门程序的无限404
- Struts2入门
- struts2 入门
- struts2入门
- struts2-入门
- 在Eclipse里搭建Jpress项目
- TmodJS 解决前端模板外置
- 数据结构与算法之——二叉树的创建及遍历
- C语言可变长参数列表原理与实现
- Unity性能优化
- struts2--1.入门程序
- spark算子join讲解
- 求N范围内的所有素数
- Codeforces Round #277 (Div. 2) C
- 谈谈小白眼里的竞品分析究竟为什么要这么做
- 继承—子父类中的构造函数-子类的实例化过程
- 我的Java之旅 第八课 Servlet 进阶API、过滤器与监听器
- 博为峰Java技术文章 ——JavaSE Swing使用ComboBoxModel创建下拉列表框Ⅰ
- Android Studio如何创建VR项目。