Java

Size: px
Start display at page:

Download "Java"

Transcription

1 Java 应用框架 Struts 实验指导书 软件学院 - 1 -

2 实验一 熟悉 struts 环境 工具 实验目的 : 通过完成 HelloWorld 程序熟悉 Struts2 的开发流程和工具实验类型 : 验证实验要求 : 必做实验内容 : 1 在 MyEclipse 中新建 web 工程 2 在 struts all\struts 解压 struts2-blank.war( 最基础的示例程序 ) 3 拷类库, 在这个项目的 lib 文件下面拷 把 jar 放入 lib 后看不见 jar 文件, 是因为 MyEclipse 默认视图是 package Explorer, 如果要看硬盘上 对应的视图, 应该打开 windows-show View-other-navigatior 4 进入 struts \apps\struts2-blank\web-inf\classes 下把 struts.xml 拷到 web 工程的 src 下面, 因为工程编译完它默认就把 src 下的文件放到 class 文件下面 5 配置 web.xml, 参考 struts 自带的 web.xml, 把 filter 的配置拷过来 <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> - 2 -

3 <url-pattern>/*</url-pattern> </filter-mapping> 示例程序 HelloWorld 在 webroot 目录下编写 3 个 jsp 页面,index.jsp Success.jsp 和 Error.jsp index.jsp <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib prefix= s uri= /struts-tags %> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'index.jsp' starting page</title> </head> <body> <!-- 提交到 action --> <form action="login.action" method="post"> 用户名 : <!-- 参数名和 action 中的属性名一样 --> <input type=text name=username> <br> 密 码 : <input type=password name=userpass> <br> <input type=submit name=subm value=" 提交 "> <input type=reset name=reset value=" 取消 "> </form> </body> </html> Success.jsp <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> - 3 -

4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'Success.jsp' starting page</title> </head> <body> <h1> 欢迎 <%=request.getparameter("username")%>, 登录 </h1> </body> </html> Error.jsp page language="java" import="java.util.*" pageencoding="utf-8"%> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'Error.jsp' starting page</title> </head> <body> <h1> 用户名或密码错误! </h1> </body> </html> 在 src 目录下建立一个类, 包名 mypack, 类名 UserAction, 其代码如下 : package mypack; import com.opensymphony.xwork2.actionsupport; public class UserAction extends ActionSupport { private String username; private String userpass; public String getusername() { return username; public void setusername(string username) { this.username = username; - 4 -

5 public String getuserpass() { return userpass; public void setuserpass(string userpass) { this.userpass = public String execute() throws Exception { if ("Mike".equals(username) && "123".equals(userpass) " 张三 ".equals(username) && "abc".equals(userpass)) return "success"; else return "error"; 在 src 目录下建立 Struts2 的配置文件 struts.xml, 内容如下 : <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <!-- 定义包管理配置的 action 继承 struts-default.xml 中的配置 --> <package name="actions" extends="struts-default"> <!-- 定义 Action(login.action) --> <action name="login" class="mypack.useraction"> <!-- 定义转发路径对应的字符串名 --> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts> 程序部署和运行 index.jsp - 5 -

6 Success.jsp 敲尖括号不提示的问题 Struts.xml 文件头定义了 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " 配置 :windows---preferences---catalog--- xml xml Catalog Add Add 入本地定义当前 xml 的 dtd 文件 : 找到 struts2-core jar 解压开找到 struts dtd 完成, 验证代码提示成功! - 6 -

7 Struts 的 namespace 示例工程 Struts2_0200_Namespace Struts.xml <struts> <constant name="struts.devmode" value="true" /> <package name="front" extends="struts-default" namespace="/front"> <action name="index"> <result>/namespace.jsp</result> </action> </package> <package name="main" extends="struts-default" namespace=""> <action name="index"> <result>/namespace.jsp</result> </action> </package> </struts> 所以 namespace 为空意味着 : 只要找到一个 index.action, 没有找到精确的对应的 namespace, 全部都交给 namespace 为空的这个 package 去处理, 所以这个 package 囊括了其他所有 package 处理不了的 action Struts 自定义具体视图的返回 示例工程 Struts2_0300_Action 修改 jsp 模板字符编码 :windows-preferences- JSP 修改编码为 UTF-8 即可 IndexAction1.java public class IndexAction1 { public String execute() { return "success"; IndexAction2.java public class IndexAction2 implements Action { - 7 -

8 public String execute() { return "success"; 真正企业开发只用这第三种! 另外两种忘记! IndexAction3.java public class IndexAction3 extends ActionSupport { public String execute() { return "success"; <struts> <constant name="struts.devmode" value="true" /> <package name="front" extends="struts-default" namespace="/"> <action name="index" class="com.bjsxt.struts2.front.action.indexaction1"> <result name="success">/actionintroduction.jsp</result> </action> </package> </struts> 具体视图的返回可以由用户自己定义的 Action 来决定具体的手段是根据返回的字符串找到对应的配置项, 来决定视图的内容具体 Action 的实现可以是一个普通的 java 类, 里面有 public String execute 方法即可或者实现 Action 接口不过最常用的是从 ActionSupport 继承, 好处在于可以直接使用 Struts2 封装好的方法 如果不配置 class 属性, 默认执行 xwork 框架的 ActionSupport 这个 action, 这个 action 就有 execute 这个 方法,return success - 8 -

9 实验二 Struts2 基础 实验目的 : 掌握 Struts2 中 Action 的不同的实现方法 实验类型 : 验证 实验要求 : 必做 实验内容 : Action 有三种接收参数的方式 1. 属性接收参数 2. 用 DomainModel( 实体模型 ) 接收参数 3. 用 ModelDriven 接收参数 ( 不常用 ) 用 Action 的属性接收参数 Index.jsp <head> <base href="<%=basepath %>"/></head> 使用 action 属性接收参数 <a href="useradd.action?name=a&age=8"> 添加用户 </a> </body> 怎么接受参数的呢? 第一种方式. 在自己的 action 下面定义两个属性, 写好 get,set 方法, 当 new 完 action 的时候, 会自动把这两个属性从参数里面拿过来, 帮你设置好 参数跟我们的成员变量一一对应, 这时候它就会自动把我们的参数传递到我们成员变量里 这时候当我们调 用 add() 方法时, 它直接可以用了 UserAction.java public class UserAction extends ActionSupport { private String name; private int age; public String execute() { System.out.println("name=" + name); System.out.println("age=" + age); return SUCCESS; public String getname() { return name; public void setname(string name) { this.name = name; public int getage() { return age; public void setage(int age) { this.age = age; - 9 -

10 Struts.xml <struts> <package name="user" extends="struts-default" namespace="/user"> <action name="useradd" class="com.bjsxt.struts2.user.action.useraction"> <result>/user_add_success.jsp</result> </action> </package> </struts> 使用 Domain Model ( 实体模型 ) 接收参数 <html> <body> 使用 Domain Model 接收参数 <a href="user/user.action?user.name=a&user.age=8"> 添加用户 </a> </body> </html> public class UserAction extends ActionSupport { private User user; //private UserDTO userdto; public String execute() { System.out.println("name=" + user.getname()); System.out.println("age=" + user.getage()); return SUCCESS; public User getuser() { return user; public void setuser(user user) { this.user = user; public class User { private String name; private int age; public String getname() { return name; public void setname(string name) { this.name = name; public int getage() { return age; public void setage(int age) { this.age = age;

11 多方法的 Action package action; import po.userinfo; import service.userservice; import com.opensymphony.xwork2.actioncontext; import com.opensymphony.xwork2.actionsupport; import com.opensymphony.xwork2.modeldriven; public class CrudUserAction extends ActionSupport implements ModelDriven<Userinfo> { // crud 业务方法 private UserService userservice = new UserService(); private Userinfo userinfo=new Userinfo(); // 模型对象 userinfo public Userinfo getmodel() { // TODO Auto-generated method stub return userinfo; // 增加 public String create() throws Exception { userservice.createuser(userinfo); return SUCCESS; // 查询 public String retrive() throws Exception { // 查询结果放在 request 中 ActionContext.getContext().put("userlist", userservice.selectusers()); return "list"; // 修改 public String update() throws Exception { userservice.updateuser(userinfo); return SUCCESS; // 删除 public String delete() throws Exception { userservice.deleteuser(userinfo.getusername()); return SUCCESS; // 默认的 execute public String execute() throws Exception { return SUCCESS; 在 struts.xml 中配置如下 :

12 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <package name="actions" extends="struts-default"> <action name="cruduser" class="action.cruduseraction"> <result>/success.jsp</result> <result name="list">/userlist.jsp</result> </action> </package> </struts>

13 实验三 Struts2 的转发控制 实验目的 : 掌握 Struts2 中不同 Result 类型配置方法及区别 实验类型 : 验证 实验要求 : 必做 实验内容 : <struts> <package name="resulttypes" namespace="/" extends="struts-default"> <action name="r1"> <result type="dispatcher">/r1.jsp</result> </action> <action name="r2"> <result type="redirect">/r2.jsp</result> </action> <action name="r3"> <result type="chain">r1</result> </action> <action name="r4"> <result type="redirectaction">r2</result> </action> </package> </struts> Result 类型 1. dispatcher 2. redirect 3. chain 4. redirectaction 5. freemarker 6. httpheader 7. stream 8. velocity 9. xslt 10.plaintext 11.tiles

14 实验四 Struts2 的输入校验 实验目的 : 掌握 Struts2 中 validate 方法来进行验证实验类型 : 验证实验要求 : 必做实验内容 : validate 方法验证 package action; import javax.servlet.http.httpservletrequest; import org.apache.struts2.servletactioncontext; import oper.useroper; import po.userinfo; import com.opensymphony.xwork2.actioncontext; import com.opensymphony.xwork2.actionsupport; import com.opensymphony.xwork2.modeldriven; public class UserAction extends ActionSupport implements ModelDriven<Userinfo> { // 数据模型 private Userinfo user = new Userinfo(); // 业务类 private UserOper uo = new UserOper(); public Userinfo getmodel() { // TODO Auto-generated method stub return user; // 增加前 public String precreate() throws Exception { return "addupdate"; // 增加 public String create() throws Exception { uo.create(user); return select(); // 删除 public String delete() throws Exception { uo.delete(user.getuserid()); return select(); // 修改 public String update() throws Exception { uo.update(user);

15 return select(); // 查询 public String select() throws Exception { ActionContext.getContext().put("userlist", uo.retriveall()); return SUCCESS; // 查询单个 public String retrive() throws Exception { Userinfo myuser = uo.retriveone(user.getuserid()); user.setusername(myuser.getusername()); user.setuserpass(myuser.getuserpass()); user.setsex(myuser.getsex()); user.setsfz(myuser.getsfz()); user.setbirthday(myuser.getbirthday()); user.setworktime(myuser.getworktime()); user.set (myuser.get ()); user.setinterest(myuser.getinterest()); user.setintro(myuser.getintro()); user.setxl(myuser.getxl()); return "addupdate"; // 验证方法 // 增加时验证 public void validatecreate() { checkform(); // 用户名是否存在 if(uo.checkusername(user.getusername())) this.addfielderror("username", " 用户名已经被占用 "); // 修改时验证 public void validateupdate() { checkform(); if(uo.checkusername(user.getusername(),user.getuserid())) this.addfielderror("username", " 用户名已经被占用 "); // 验证要求 public void checkform() { HttpServletRequest request = ServletActionContext.getRequest(); // 用户名不能为空 if (user.getusername() == null user.getusername().equals("")) this.addfielderror("username", " 用户名不能为空 "); // 密码不能为空 if (user.getuserpass() == null user.getusername().equals("")) this.addfielderror("userpass", " 密码不能为空 ");

16 // 2 次密码相同 else if (!user.getuserpass().equals(request.getparameter("userpass1"))) this.addfielderror("userpass", "2 次密码不一样 "); // 身份证不能为空 if (user.getsfz() == null user.getsfz().equals("")) this.addfielderror("sfz", " 身份证不能为空 "); // 身份证必须是 15 或 18 位 else if (!user.getsfz().matches("^\\d{17[\\d X] \\d{15$")) this.addfielderror("sfz", " 身份证必须是 15 位或 18 位 "); // 不能为空 if (user.get () == null user.get ().equals("")) this.addfielderror(" ", " 不能为空 "); else if (!user.get ().matches("^\\w+@\\w+(\\.\\w+)+$")) this.addfielderror(" ", " 格式错误 "); // 生日不能为空 if (user.getbirthday() == null) this.addfielderror("birthday", " 生日不能为空 "); // 兴趣至少选一项 if (user.getinterest() == null) this.addfielderror("interest", " 兴趣至少选一项 "); // 工作年限 之间 if (user.getworktime() < 1 user.getworktime() > 100) this.addfielderror("worktime", " 工作年限必须在 之间 "); // 简介不能为空 if (user.getintro() == null user.getintro().equals("")) this.addfielderror("intro", " 简介不能为空 "); Struts.xml 中增加了验证出错时跳转到的页面 <result name= input ></result> <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <!-- 请求参数的中文处理 --> <constant name="struts.i18n.encoding" value="gbk"/> <!-- 修改后的 xml 自动加载 --> <constant name="struts.configuration.xml.reload" value="true"/> <package name="actions" extends="struts-default"> <action name="user" class="action.useraction"> <result>/userlist.jsp</result> <result name="addupdate">/addupdate.jsp</result> <result name="input">/addupdate.jsp</result> </action>

17 </package> </struts> validate 框架 (xml) 验证 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" " <!-- 验证规则定义根元素 --> <validators> <!-- 第一个验证字段 : 姓名 name --> <field name="name"> <!-- 验证规则 : 非空 ( 系统预先定义好的规则 ) --> <field-validator type="requiredstring"> <!-- 错误提示 --> <message> 姓名不能为空 </message> </field-validator> <!-- 验证规则 : 长度在 5-10 之间 ( 系统预先定义好的规则 ) --> <field-validator type="stringlength"> <param name="minlength">5</param> <param name="maxlength">10</param> <!-- 错误提示 --> <message> 姓名长度必须在 ${minlength-${maxlength 个字符之间 </message> </field-validator> </field> <!-- 第二个验证字段 : 年龄 age --> <field name="age"> <field-validator type="conversion" short-circuit="true"> <!-- 错误提示 --> <message> 必须输入整数 </message> </field-validator> <field-validator type="int"> <param name="min">20</param> <param name="max">35</param> <!-- 错误提示 --> <message> 年龄必须在 ${min-${max 之间 </message> </field-validator> </field> <!-- 第三个验证字段 : 分数 mark --> <field name="mark"> <field-validator type="conversion" short-circuit="true"> <!-- 错误提示 --> <message> 必须输入数字 </message> </field-validator> <field-validator type="double">

18 <param name="mininclusive">50</param> <param name="maxinclusive">100</param> <!-- 错误提示 --> <message> 分数必须在 ${mininclusive-${maxinclusive 之间 </message> </field-validator> </field> <!-- 第三个验证字段 : 入学时间 enrolltime --> <field name="enrolltime"> <field-validator type="conversion" short-circuit="true"> <!-- 错误提示 --> <message> 必须是日期格式 </message> </field-validator> <field-validator type="required"> <!-- 错误提示 --> <message> 入学时间不能为空 </message> </field-validator> <field-validator type="date"> <param name="min"> </param> <param name="max"> </param> <!-- 错误提示 --> <message> 入学时间必须在 ${min 到 ${max 之间 </message> </field-validator> </field> </validators>

19 实验五 Struts2 的标签 ( 一 ) 实验目的 : 熟悉 Struts 标签库实验类型 : 验证实验要求 : 必做实验内容 : if~elseif elseif~else 描述 : 执行基本的条件流转 名称 必需 默认 类型 描述 备注 test 是 boolean id 否 Object/String 例 : <s:set name="age" value="61"/> <s:if test="${age > 60"> 老年人 </s:if> <s:elseif test="${age > 35"> 中年人 </s:elseif> <s:elseif test="${age > 15" id="wawa"> 青年人 </s:elseif> <s:else> 少年 </s:else> 决定标志里的内容是否显示的表达式用来标识元素的 id 在 UI 和表单中为 HTML 的 id 属性 else 标志没有这个参数 Iterator( 迭代 ) 描述 : 用于遍历集合 (java.util.collection java.util.collection) 或枚举值 (java.util.iterator) 名称 必需 默认 类型 描述 status 否 String 如果设置此参数, 一个 IteratorStatus 的实例将会压入每 一个遍历的堆栈 value 否 Object/ String id 否 Object/ String 要遍历的可枚举的 (iteratable) 数据源, 或者将放入的新列表 (List) 的对想 用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性

20 I18n( 国际化操作 ) 描述 : 加载资源包到值堆栈 它可以允许 text 标志访问任何资源包的信息 而不只当前的 action 相关联的资源包 名称 必需 默认 类型 描述 name 是 Object/String 资源包的类路径 ( 如 com.xxxx.resources.appmsg) id 否 Object/String 用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性 Include 描述 : 包含一个 servlet 的输出 (servlet 或 jsp 的页面 ) 名称 必需 默认 类型 描述 value 时 String 要包含的 jsp 页面或 servlet id 否 Object/String 用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性 param 描述 : 属性是可选的, 如果提供, 会调用 Component 的方法,addParameter(String,Object), 如果不提供, 则外层嵌套标签必须实现 UnnamedParametric 接口 Value 的提供有两种方式, 通过 value 属性或者标签中间的 text, 不同之处 : <s:param name="name">zhaosoft</s:param> 参数会以 String 的格式放入 statck <s:param name="name" value="zhaosoft"/> 该值会以 java.lang.object 的格式放入 statck 名称 必需 默认 类型 描述 name 否 String value 时 String id 否 Object/String 参数名 value 表达式用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性 set 描述 :set 标签赋予变量一个特定范围内的值 当希望给一个变量赋一个复杂的表达式, 每次访问该变量而不是复杂的表达式时用到 其在两种情况下非常有用 : 复杂的表达式很耗时 ( 性能提升 ) 或者很难理解 ( 代码的可读性提高 ) 名称 必需 默认 类型 描述

21 name 是 String scope 否 String 变量名字变量作用域, 可以为 application,session,request,page,action value 否 Object/String id 否 Object/String 将会赋给变量的值用来标识元素的 id 在 ui 和表单中为 HTML 的 Text id 属性 描述 : 支持国际化信息的标签 国际化信息必须放在一个和当前国际化信息必须放在一个和当前 action 同名的 resource bundle 中, 如果没有找到相应 message,tag body 将被当作默认的 message, 如果没有 tag body,message 的 name 会被作为默认 message. 名称 必需 默认 类型 描述 name 是 String id 否 Object/String url 资源属性的名字用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性 描述 : 该标签用于创建 url, 可以通过 param 标签提供 request 参数 当 includeparams 的值是 all 或 get,param 标签中定义的参数将有优先权, 也就是说其会覆盖其他同名参数的值

22 实验六 Struts2 的标签 ( 二 ) 实验目的 : 熟悉 Struts 标签库实验类型 : 设计实验要求 : 必做实验内容 : 单行文本框 Textfield 标签输出一个 HTML 单行文本输入控件, 等价于 HTML 代码 <input type= text > 名称 必需 默认 类型 描述 maxlength 否 无 Integer readonly 否 false Boolean size 否 无 Integer id 否 Object/String 例 : <s:form action="register" method="post"> 文本输入控件可以输入字符的最大长度当该属性为 true 时, 不能输入指定可视尺寸用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性 <s:textfield name="username" label=" 用户名 "></s:textfield> </s:form> 文本框区 Textarea 标签输出一个 HTML 多行文本输入控件, 等价于 HTML 代码 :<textarea /> 名称 必需 默认 类型 描述 cols 否 无 Integer rows 否 无 Integer readonly 否 false Boolean wrap 否 false Boolean id 否 Object/String 列数行数当该属性为 true 时, 不能输入指定多行文本输入控件是否应该换行用来标识元素的 id 在 ui 和表单中为 HTML 的 id 属性例 : <s:textarea name="personal" cols="10" rows="5" label=" 个人简历 "></s:textarea> 下拉列表 s:select 标签输出一个下拉列表框, 相当于 HTML 代码中的 <select/> 名称 必需 默认 类型 描述 list 是 无 Cellection Map Enumeration Iterator array listkey 否 无 String 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会成为选项的内容指定集合对象中的哪个属性作为选项的 value

23 listvalue 否 无 String headerkey 否 无 String 指定集合对象中的哪个属性作为选项的内容设置当用户选择了 header 选项时, 提交的的 value, 如果使用该属性, 不能为该属性设置空值 headervalue 否 无 String emptyoption tion 否 false Boolean multiple 否 false Boolean 显示在页面中 header 选项内容是否在 header 选项后面添加一个空选项是否多选 size 否 无 Integer 显示的选项个数 例 : <%@ page contenttype="text/html;charset=gbk" %> <%@ taglib prefix="s" uri="/struts-tags" %> <h3> 使用 name 和 list 属性,list 属性的值是一个列表 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="{' 高中 ',' 大学 ',' 硕士 ',' 博士 '"/> </s:form> <h3> 使用 name 和 list 属性,list 属性的值是一个 Map</h3> <s:form> <s:select label=" 最高学历 " name="education" list="#{1:' 高中 ',2:' 大学 ',3:' 硕士 ',4:' 博士 '"/> </s:form> <h3> 使用 headerkey 和 headervalue 属性设置 header 选项 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="{' 高中 ',' 大学 ',' 硕士 ',' 博士 '" headerkey="-1" headervalue=" 请选择您的学历 "/> </s:form> <h3> 使用 emptyoption 属性在 header 选项后添加一个空的选项 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="{' 高中 ',' 大学 ',' 硕士 ',' 博士 '" headerkey="-1" headervalue=" 请选择您的学历 " emptyoption="true"/> </s:form> <h3> 使用 multiple 属性设置多选 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="{' 高中 ',' 大学 ',' 硕士 ',' 博士 '" headerkey="-1" headervalue=" 请选择您的学历 " emptyoption="true" multiple="true"/>

24 </s:form> <h3> 使用 size 属性设置下拉框可显示的选项个数 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="{' 高中 ',' 大学 ',' 硕士 ',' 博士 '" headerkey="-1" headervalue=" 请选择您的学历 " emptyoption="true" multiple="true" size="8"/> </s:form> <h3> 使用 listkey 和 listvalue 属性, 利用 Action 实例的属性 (property) 来设置选项的值和选项的内容 </h3> <s:form> <s:select label=" 最高学历 " name="education" list="educations" listkey="id" listvalue="name"/> </s:form doubleselect 标签 doubleselect 标签输出关联的两个 HTML 列表框, 产生联动效果 名称 必需 默认 类型 描述 list 是 无 Cellection Map Enumeration Iterator array 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会 成为选项的内容 listkey 否无 String 指定集合对象中的哪个属性作为选项的 value, 该选项只对第一个列表框起作用 listvalue 否无 String 指定集合对象中的哪个属性作为选项的内 容, 该选项只对第一个列表框起作用 headerkey 否无 String 设置当用户选择了 header 选项时, 提交的 的 value, 如果使用该属性, 不能为该属性设置空值 headervalue 否无 String 显示在页面中 header 选项内容 emptyoption 否 false Boolean multiple 否 false Boolean size 否无 Integer 是否多选显示的选项个数, 该选项只对第一个列表 框起作用 doubleid 否 无 String doublelist 是 无 Cellection Map 指定第二个列表框的 ID 要迭代的集合 Enumeration Iterator array

25 doublelistkey 否无 String 指定集合对象中的哪个属性作为选项的 value, 该选项只对第二个列表框起作用 doublelistvalue 否无 String 指定集合对象中的哪个属性作为选项的内 容, 该选项只对第二个列表框起作用 doublesize 否 无 Integer doublename 否 无 String doublevalue 否 无 Object 例 : <s:form name="test"> 选项个数指定第二个列表框的 name 映射第二个列表框的初始选种项 <s:doubleselect label=" 请选择所在省市 " name="province" list="{' 四川省 ',' 山东省 '" doublename="city" doublelist="top == ' 四川省 '? {' 成都市 ', ' 绵阳市 ' : {' 济南市 ', ' 青岛市 '" /> </s:form> <s:form action="doubleselecttag"> <s:doubleselect label=" 请选择所在省市 " name="province" list="provinces" listkey="id" listvalue="name" doublelist="cities" doublelistkey="id" doublelistvalue="name" doublename="city" headerkey="-1" </s:form> headervalue=" 请选择 " emptyoption="true" /> 复选框 名称 必需 默认 类型 描述 fieldvalue 是 true String 指定在复选框选中时, 实际提交的值 复选框组, 对应 Action 中的集合 名称 必需 默认 类型 描述 list 是 无 Cellection Map Enumeration Iterator array listkey 否无 String 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会成为选项的内容 指定集合对象中的哪个属性作为选项的 value

26 listvalue 否无 String 指定集合对象中的哪个属性作为选项的内容 例 :checkboxlisttag.jsp page contenttype="text/html;charset=gbk" %> taglib prefix="s" uri="/struts-tags" %> <s:form> <s:checkboxlist name="interest" list="{' 足球 ',' 篮球 ',' 排球 ',' 游泳 '" label=" 兴趣爱好 "/> </s:form> 单击复选框 名称 必需 默认 类型 描述 accept 否 input String HTML accept 属性, 指出接受文件的 MIME 类型 按钮 Submit 标签输出一个按钮,submit 标签和 form 标签使用可以提供异步表单提交功能 Submit 标签可以输出以下三种类型的提交按钮 : Input: 等价于 HTML 代码 <input type= submit > Image: 等价于 HTML 代码 <input type="image"> Button:<button type="submit"></button> 名称 必需 默认 类型 描述 type 否 input String 要使用的提交按钮的类型, 有效值 :input button image src 否无 String 为 image 类型的提交按钮设置图片地址 该属性对 input 和 button 类型的提交按钮无效 action 否无 String 指定处理提交请求的 action method 否无 String 指定处理提交请求的 action 的方法例 1: <s:submit type="image" method="login" src="images/login.jpg"></s:submit> 页面输出 : <input type="image" alt="submit" src="images/login.jpg" id="user login" name="method:login" value="submit"/> 例 2: <s:submit type="button" action="selecttag" method="login" label=" 登陆 "></s:submit> 页面输出 : <button type="submit" id="user_selecttag_login" name="action:selecttag!login" value="submit"> 登陆 </button> Struts2 预定义的前缀 : 1 method 前缀使用 method 前缀, 来取代 action 默认的 execute() 方法的执行 <s:form action="user">

27 <s:textfield name="user.username" label=" 用户名 "></s:textfield> <s:textfield name="user.password" label=" 密码 "></s:textfield> <s:submit value=" 登陆 " name="method:login"></s:submit> <s:submit value=" 注册 " name="method:register"></s:submit> </s:form> 注意 :input 类型的按钮, 不能用 label 设置按钮上的文本, 只能用 value 2 action 前缀使用 action 前缀, 取代 form 标签指定的 action, 导向到另一个 action 进行处理 <s:form action="login"> <s:textfield name="user.username" label=" 用户名 "></s:textfield> <s:textfield name="user.password" label=" 密码 "></s:textfield> <s:submit value=" 登陆 "></s:submit> <s:submit value=" 注册 " name="action:register"></s:submit> </s:form> 3 redirect 前缀使用 redirect 前缀请求重定向到其他的 url, 甚至可以是 web 英语程序外部的 url <s:form action="login"> <s:textfield name="user.username" label=" 用户名 "></s:textfield> <s:textfield name="user.password" label=" 密码 "></s:textfield> <s:submit value=" 登陆 "></s:submit> <s:submit value=" 搜索 " name="redirect: </s:form> reset 标签 reset 标签输出一个重置按钮 名称 必需 默认 类型 描述 type 否 input String 要使用的重置按钮的内容,input button <s:reset value=" 重置 "></s:reset> <s:reset type="button" label=" 重置 "></s:reset> updownselect 标签 updownselect 标签创建一个带有上下移动的按钮的列表框, 可以通过上下移动按钮来调整列表框的选项的位置 名称 必需 默认 类型 描述 list 是 无 Cellection Map Enumeration Iterator array 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会 成为选项的内容 listkey 否无 String 指定集合对象中的哪个属性作为选项的 value listvalue 否无 String 指定集合对象中的哪个属性作为选项的内 容

28 headerkey 否无 String 设置当用户选择了 header 选项时, 提交的 的 value, 如果使用该属性, 不能为该属性设置空值 headervalue 否无 String 显示在页面中 header 选项内容 emptyoption 否 false multiple 否 false Boolean Boolean 是否在 header 选项后面添加一个空选项是否多选 size 否 无 Integer moveuplabel 否 String movedownlabel 否 String selectalllabel 否 String allowmoveup 否 无 Boolean allowmovedown 否 无 Boolean 显示的选项个数设置向上移动按钮上的文本设置向下移动按钮上的文本设置向全部选择按钮上的文本设置是否使用向上移动按钮设置是否使用向下移动按钮 allowselectall 否 无 Boolean 设置是否使用全部选择按钮 实例 : <s:form> <!-- 使用简单集合来生成可上下移动选项的下拉选择框 --> <s:updownselect name="a" label=" 请选择您喜欢的图书 " labelposition="top" moveuplabel=" 向上移动 " list="{'spring2.0 宝典 ', ' 轻量级 J2EE 企业应用实战 ', 'JavaScript: The Definitive Guide'"/> <!-- 使用简单 Map 对象来生成可上下移动选项的下拉选择框且使用 emptyoption="true" 增加一个空选项 --> <s:updownselect name="b" label=" 请选择您想选择出版日期 " labelposition="top" movedownlabel=" 向下移动 " list="#{'spring2.0 宝典 ':'2006 年 10 月 ', ' 轻量级 J2EE 企业应用实战 ':'2007 月 4 月 ', ' 基于 J2EE 的 Ajax 宝典 ':'2007 年 6 月 '" listkey="key" emptyoption="true" listvalue="value"/> <s:bean name="com.zhaosoft.ui.formtag.bookservice" id="bs"/> <!-- 使用集合里放多个 JavaBean 实例来可上下移动选项的生成下拉选择框 --> <s:updownselect name="c" label=" 请选择您喜欢的图书的作者 " labelposition="top" selectalllabel=" 全部选择 " multiple="true" list="#bs.books" listkey="author" listvalue="name"/> </s:form> package com.zhaosoft.ui.formtag;

29 public class BookService { public Book[] getbooks() { return new Book[] { new Book("Spring2.0 宝典 ","zhaosoft"), new Book(" 轻量级 J2EE 企业应用实战 ","zhaosoft"), new Book(" 基于 J2EE 的 Ajax 宝典 ","zhaosoft") ; optiontransferselect 标签 optiontransferselect 标签创建一个选项转移列表组建, 它由两个 <select> 标签以及它们之间的用于将选项在两个 <select> 之间相互移动的按钮组成 表单提交时, 将提交两个列表框中选中的选项 名称 必需 默认 类型 描述 list 是 无 Cellection Map Enumeration Iterator array 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会 成为选项的内容, 该选项只对第一个列表框起作用 listkey 否无 String 指定集合对象中的哪个属性作为选项的 value, 该选项只对第一个列表框起作用 listvalue 否无 String 指定集合对象中的哪个属性作为选项的内 容, 该选项只对第一个列表框起作用 headerkey 否无 String 设置当用户选择了 header 选项时, 提交的 的 value, 如果使用该属性, 不能为该属性设置空值 headervalue 否无 String multiple 否 false Boolean size 否无 Integer 显示在页面中 header 选项内容是否多选显示的选项个数, 该选项只对第一个列表 框起作用 doubleid 否 无 String doublelist 是 无 Cellection Map Enumeration Iterator array 指定第二个列表框的 ID 要迭代的集合, 使用集合中的元素来设置各个选项, 如果 doublelist 的属性为 Map 则 Map 的 key 成为选项的 value,map 的 value 会成为选项的内容, 该选项只对第二 个列表框起作用

30 doublelistkey 否无 String 指定集合对象中的哪个属性作为选项的 value, 该选项只对第二个列表框起作用 doublelistvalue 否无 String 指定集合对象中的哪个属性作为选项的内 容, 该选项只对第二个列表框起作用 doubleheaderkey 否无 String 设置当用户选择了 header 选项时, 提交的 的 value, 如果使用该属性, 不能为该属性设置空值 doubleheadervale 否 无 String doubleemptyoption 否 无 String 显示在页面中 header 选项内容是否在第二列表框的 header 后面添加一个 doublemultiple 否 true Boolean 空选项是否多选 doublesize 否 无 Integer doublename 否 无 String doublevalue 否 无 Object lefttitle 否 无 String righttitle 否 <- String 选项个数指定第二个列表框的 name 映射第二个列表框的初始选种项左边列表框的标题右边列表框的标题 addtoleftlable 否 String addtorightlable addalltoleftlable addalltorightlable leftuplabel leftdownlabel rightuplabel rightdownlabel allowaddtoleft allowaddtoright allowaddalltoleft allowaddalltoright allowselectall 否无 Boolean 设置是否使用全部选择按钮 allowupdownonleft allowupdownonright 例 : <s:head/> <s:form> <s:optiontransferselect

31 label=" 最喜爱的图书 " name="javabook" list="{' Java Web 开发详解 ', ' Struts 2 深入详解 ', ' Java 快速入门 '" doublename="cbook" doublelist="{' VC++ 深入详解 ', ' C++ Primer ', ' C++ 程序设计语言 '"/> </s:form> <s:form> <s:optiontransferselect label=" 最喜爱的图书 " name="book1" lefttitle="java 图书 " righttitle="c/c++ 图书 " list="{' Java Web 开发详解 ', ' Struts 2 深入详解 ', ' Java 快速入门 '" headerkey="-1" headervalue="--- 请选择 ---" emptyoption="true" doublename="book2" doublelist="{' VC++ 深入详解 ', ' C++ Primer ', ' C++ 程序设计语言 '" doubleheaderkey="-1" doubleheadervalue="--- 请选择 ---" doubleemptyoption="true" addtoleftlabel=" 向左移动 " addtorightlabel=" 向右移动 " addalltoleftlabel=" 全部左移 " addalltorightlabel=" 全部右移 " selectalllabel=" 全部选择 " leftuplabel=" 向上移动 " leftdownlabel=" 向下移动 " rightuplabel=" 向上移动 " rightdownlabel=" 向下移动 "/> </s:form>

32 实验七 Struts2 的国际化 实验目的 : 掌握 Struts2 的国际化方法实验类型 : 设计实验要求 : 必做实验内容 : 在 struts.xml 中配置 struts.custom.i18n.resources 常量 <constant name="struts.custom.i18n.resources" value="globalmessages"/> 在 src 目录下建立中文和英文的资源文件, 中文资源文件 globalmessages_zh_cn.properties 的内容如下 : username= 用户名 userpass= 密码 success= 登录成功 error= 登录失败 login= 登录使用 native2ascii 工具把该文件转换为 unicode 编码 英文资源文件 globalmessages_en.properties 的内容如下 : username=user Name userpass=password success=welcome error=sorry! You can not log in login=login 编写登录页面 Login.jsp, 其内容如下 : <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'Login.jsp' starting page</title> </head> <body> <s:form action="dologin"> <s:textfield name="username" key="username"/> <s:password name="userpass" key="userpass"/> <s:submit key="login"/>

33 </s:form> </body> </html> 登录成功页面 Success.jsp 内容如下 : <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'Success.jsp' starting page</title> </head> <body> <s:property value="username"/> <s:text name="success"/> </body> </html> 登录失败页面 Error.jsp 内容如下 : <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title>my JSP 'Error.jsp' starting page</title> </head> <body> <s:text name="error"></s:text> </body> </html> 上述页面中的 Struts2 标签都可以访问资源文件, 表单标签 <s:textfield name= key= /> 中的属性 key 用于访问资源文件,<s:text name= /> 标签中的 name 属性用于访问资源文件

34 实验八 Struts2 拦截器 实验目的 : 掌握 Struts2 的拦截器设计方法实验类型 : 综合实验要求 : 必做实验内容 : 1. 建立一个 Action 类 MyAction.java 和配置文件 Struts.xml; MyAction.java package action; import com.opensymphony.xwork2.actionsupport; public class MyAction extends ActionSupport { private int age;// 年龄 public int getage() { return age; public void setage(int age) { this.age = public String execute() throws Exception { // TODO Auto-generated method stub System.out.println("Action execute..."); return SUCCESS; struts.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <package name="action" extends="struts-default"> <action name="test" class="action.myaction"> <result>success.jsp</result> </action> </package> </struts> 2. 建立一个拦截器类 HelloWorldInterceptor.java, 其代码如下 ; package interceptor; import action.myaction; import com.opensymphony.xwork2.actioninvocation; import com.opensymphony.xwork2.interceptor.abstractinterceptor;

35 public class HelloWorldInterceptor extends AbstractInterceptor { // public String intercept(actioninvocation arg0) throws Exception { // 获得被调用的 Action 类 Object action = arg0.getaction(); // 打印 HelloWorld System.out.println(" 拦截器信息 :HelloWorld!"); // 执行 Action 或调用下一个拦截器 String result = arg0.invoke(); // 执行完 action 后提示 System.out.println("Action 执行完毕!"); return result; 3. 在 struts.xml 中加入拦截器的配置, 见 struts.xml 内容 ; <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <package name="action" extends="struts-default"> <!-- 定义拦截器 --> <interceptors> <interceptor name="helloworld" class="interceptor.helloworldinterceptor"/> </interceptors> <action name="test" class="action.myaction"> <result>success.jsp</result> <!-- action 中引用拦截器 --> <interceptor-ref name="helloworld"/> </action> </package> </struts> 4. 编写 JSP 页面 Success.jsp <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>my JSP 'Success.jsp' starting page</title> </head> <body> <h1> 调用成功 </h1> <s:property value="age"/>

36 </body> </html> 5. 运行该 web 程序, 在地址栏输入 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <package name="action" extends="struts-default"> <!-- 定义拦截器 --> <interceptors> <interceptor name="helloworld" class="interceptor.helloworldinterceptor" /> </interceptors> <action name="test" class="action.myaction"> <result>success.jsp</result> <!-- action 中引用默认拦截器 --> <interceptor-ref name="defaultstack" /> <!-- action 中引用拦截器 --> <interceptor-ref name="helloworld" /> </action> </package> </struts> 6. 再次运行程序, 输出结果正确 文件上传上传单个文件的 JSP 页面代码如下 : <%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

37 <html> <head> <title>my JSP 'index.jsp' starting page</title> </head> <body> <s:form action="fileupload" method="post" enctype="multipart/form-data"> 上传文件 :<s:file name="doc"/><br> <s:submit value=" 上传 "/> </s:form> </body> </html> form 表单的 enctype 属性设置为 multipart/form-data enctype 用来指定表单数据的编码方式, 有如下 3 个值 1. application/x-www-form-urlencoded: 指定该值, 则表单中的数据被编码为 Key-Value 对, 这是默认的编码方式 2. multipart/form-data: 使用 mime 编码, 会以二进制流的方式来处理表单数据, 文件上传需要使用该编码方式 3. text/plain: 表单数据以纯文本形式进行编码, 其中不含任何控件和格式字符 file 类型表单域 doc 用于选择上传文件, 它和 Action 中的 java.io.file 类型的属性 doc 对应, 同时上传文件的文件名对应于 Action 中的属性 docfilename, 上传文件的文件类型对应于 Action 中的属性 doccontenttype 一般说来, 为了上传文件, 如果表单域名称为 xxx, 那么在 Action 中应建立如下 3 个属性来接收上传文件的信息 private java.io.file xxx;// 封装上传文件的二进制内容 private String xxxcontenttype;// 封装上传文件的文件类型 private String xxxfilename;// 封装上传文件的文件名封装上传文件的数据类 FileInfo.java 代码如下 : package po; import java.io.file; public class FileInfo { private File doc; // 封装上传文件的属性 private String docfilename; // 封装上传文件的名称属性 private String doccontenttype; // 封装上传文件的类型属性 private String targetdir; // 保存路径 private String targetfilename; // 保存的文件名 public File getdoc() { return doc; public void setdoc(file doc) { this.doc = doc; public String getdoccontenttype() { return doccontenttype; public void setdoccontenttype(string doccontenttype) { this.doccontenttype = doccontenttype;

38 public String getdocfilename() { return docfilename; public void setdocfilename(string docfilename) { this.docfilename = docfilename; public String gettargetdir() { return targetdir; public void settargetdir(string targetdir) { this.targetdir = targetdir; public String gettargetfilename() { return targetfilename; public void settargetfilename(string targetfilename) { this.targetfilename = targetfilename; 用于文件上传的 Action 代码如下 : package action; import java.io.file; import org.apache.commons.io.fileutils; import org.apache.struts2.servletactioncontext; import po.fileinfo; import com.opensymphony.xwork2.actionsupport; import com.opensymphony.xwork2.modeldriven; public class FileUploadAction extends ActionSupport implements ModelDriven<FileInfo> { // 封装文件信息 FileInfo fileinfo = new FileInfo(); public FileInfo getmodel() { // TODO Auto-generated method stub return public String execute() throws Exception { // TODO Auto-generated method stub // 获得服务器上保存上传文件的目录 updfile 的绝对路径 String realpath = ServletActionContext.getServletContext().getRealPath( "/updfile"); // 设置保存文件的目录

39 fileinfo.settargetdir(realpath); // 设置目标文件名 fileinfo.settargetfilename(generatefilename(fileinfo.getdocfilename())); // 把 doc 内容复制到 target FileUtils.copyFile(fileinfo.getDoc(), new File(fileinfo.getTargetdir(), fileinfo.gettargetfilename())); return SUCCESS; // 产生唯一的文件名 private synchronized String generatefilename(string filename) { int position = filename.lastindexof("."); String ext = filename.substring(position); return System.nanoTime() + ext; Action 的配置文件 struts.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <package name="action" extends="struts-default"> <action name="fileupload" class="action.fileuploadaction"> <result>success.jsp</result> </action> </package> </struts> 显示结果页面 Success.jsp <%@ page language="java" import="java.util.*" pageencoding="gbk"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>my JSP 'Success.jsp' starting page</title> </head> <body> 上传文件类型 :<s:property value="doccontenttype"/><br> 上传成功后文件位置 :<s:property value="targetdir"/><br> 上传图片 :<img width=200 height=200 src="<s:property value="'updfile/'+targetfilename"/>"><br> </body> </html> 部署后运行, 效果如图所示

40 选择文件上传 图片上传后显示 上传文件的过滤上传文件的时候可以限制上传文件的类型和大小, 使用拦截器来实现 文件上传的拦截器是系统拦截器, 我们只要配置参数就可以了 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" " <struts> <!-- 上传文件的临时保存目录 --> <constant name="struts.multipart.savedir" value="/tmp" /> <package name="action" extends="struts-default"> <action name="fileupload" class="action.fileuploadaction"> <result>/success.jsp</result> <result name="input">/index.jsp</result> <interceptor-ref name="fileupload"> <!-- 允许上传的文件类型 --> <param name="allowedtypes"> image/bmp,image/png,image/gif,image/jpeg </param> <!-- 上传文件的最大容量单位字节 --> <param name="maximumsize">20000</param> </interceptor-ref>

41 <interceptor-ref name="defaultstack" /> </action> </package> </struts> 重新运行该程序, 选择一个比较大的文件, 单击 上传 按钮, 结果如图所示 错误提示都是英文, 如果要改成中文提示, 需要配置全局资源文件 globalmessage_zh_cn.proeprties, 内容如下 : struts.messages.error.file.too.large= 上传文件太大 struts.messages.error.content.type.not.allowed= 上传文件必须是图像文件 struts.messages.error.uploading= 上传过程出现异常转换编码成为 unicode 编码 然后在 struts.xml 中引入该资源文件 <constant name="struts.custom.i18n.resources" value="globalmessage" /> 重新运行后, 效果如图所示 在 struts.xml 中配置 <constant name="struts.multipart.savedir" value="/tmp" /> 用于指定上传文件保存的临时目录, 上传完成后系统会自动删除临时目录中的内容 文件下载文件下载可以通过配置 struts.xml 中 result 的类型来实现, 执行下载操作的 Action 代码如下所示 :

42 package action; import java.io.inputstream; import org.apache.struts2.servletactioncontext; import com.opensymphony.xwork2.actionsupport; public class FileDownloadAction extends ActionSupport { private String inputpath; // 下载文件路径 private String contenttype; // 文件类型 private String filename; // 文件名 // 返回一个 InputStream 类型 public java.io.inputstream getinputstream() { return public String execute() throws Exception { // 调用相关业务逻辑方法动态设置下载信息 inputpath = "/updfile/bliss.jpg"; contenttype = "image/jpeg"; // 解决下载的中文文件名问题 filename = java.net.urlencoder.encode(" 文件.jpg","utf-8"); return SUCCESS; public String getcontenttype() { return contenttype; public void setcontenttype(string contenttype) { this.contenttype = contenttype; public String getfilename() { return filename; public void setfilename(string filename) { this.filename = filename; public String getinputpath() { return inputpath; public void setinputpath(string inputpath) { this.inputpath = inputpath; 上述代码中的 java.io.inputstream getinputstream() 方法必须有, 它返回要下载文件的二进制输入流 struts.xml 中配置下载 Action 的 result 类型为 stream, 内容如下 : <action name="filedownload" class="action.filedownloadaction"> <result name="success" type="stream">

43 <!-- 定义相关参数 --> <param name="contenttype">${contenttype</param> <param name="inputname">inputstream</param> <param name="buffersize">4096</param> <param name="contentdisposition">attachment;filename=${filename</param> </result> </action> 地址栏输入 出现如图所示画面 下载图片

金融信息系统业务结构设计实验指导书 软件学院 - 1 -

金融信息系统业务结构设计实验指导书 软件学院 - 1 - 金融信息系统业务结构设计实验指导书 软件学院 - 1 - 实验一 熟悉 struts 环境和工具 实验目的 : 通过完成 HelloWorld 程序熟悉 Struts2 的开发流程实验类型 : 验证实验要求 : 必做实验内容 : 1 在 MyEclipse 中新建 web 工程 2 在 struts-2.2.1.1-all\struts-2.2.1.1 解压 struts2-blank.war( 最基础的示例程序

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问 内置对象的取得和多人开发 一 内置对象的取得 在使用的 servlet 的时候可以通过 HttpServletResquest 获取到一些内置对象, 但是在 struts2 中为了方便取得内置对象, 专门提供了一个 ServletActionContext 这个类取得取得内置对象, 观察如下方法 public static javax.servlet.jsp.pagecontext() 取得 pagecontext

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information

J2EE MVC with Webwork2 Xwork, to J2EE MVC with Webwork2 Xwork

J2EE MVC with Webwork2 Xwork,  to J2EE MVC with Webwork2 Xwork MVC with Webwork2 Xwork Action...1 ActionContext...3 ActionProxyFactory Factory...4 ActionProxyFactory Proxy AOP...7 XworkInterceptor...8 Interceptor...9 LoginAction...10 LoginInterceptor...12 Action Result

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

Microsoft Word - ShkZw3.doc

Microsoft Word - ShkZw3.doc 第 3 章 Struts2 的高级组件 本章将介绍 Struts2 中比较常用的高级组件 通过对这些高级组件的学习, 将有助于进一步了解和使用 Struts2 框架 本章主要内容 : (1)Struts2 对国际化的支持 (2)Struts2 常用拦截器的使用 (3)Struts2 的数据验证功能 (4)Struts2 对文件上传和下载的支持 3.1 Struts2 的国际化 国际化 是指一个应用程序在运行时能够根据客户端请求所来自国家或地区语言的不同而显示不同的用户界面

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

北 风 网 讲 师 原 创 作 品 ---- 仅 供  学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 北 风 网 讲 师 原 创 作 品 ---- 仅 供 www.ibeifeng.com 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 者 远 ; 顺 风 而 呼, 声 非 加 疾 也, 而 闻 者 彰 假 舆 马 者, 非 利 足 也,

More information

untitled

untitled PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

07-form

07-form PHP 的输 入 表单与 文件上传杨亮 Web 基本流程 请求 页 面 对应 文件 获取数据 PC Mobile HTTP 请求 html css javascript 服务器 (Apache) (IIS) html css javascript 后端脚本 (PHP) (JSP) (ASP) 数据库 (MySQL) (Oracle) (Access) 返回 页 面 返回 页 面 返回数据 客户端 服务器端

More information

RUN_PC連載_10_.doc

RUN_PC連載_10_.doc PowerBuilder 8 (10) Jaguar CTS ASP Jaguar CTS PowerDynamo Jaguar CTS Microsoft ASP (Active Server Pages) ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar Server ASP

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

关于属性文件的读法

关于属性文件的读法 轻松入门之 Struts2 V3.0 前言 Struts2 其实并不是一个陌生的 Web 框架,Struts2 是以 Webwork 的设计思想为核心, 吸收了 Struts1 的优点, 因此, 可以认为 Struts2 是 Struts1 和 Webwork 结合的产物 Struts2 的使用人群逐渐增多, 它在逐步吸引开发者和用户的目光, 毫无疑问, 大家最终都会选择于它, 困为它确实是一个很优秀的框架

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

RUN_PC連載_8_.doc

RUN_PC連載_8_.doc PowerBuilder 8 (8) Web DataWindow ( ) DataWindow Web DataWindow Web DataWindow Web DataWindow PowerDynamo Web DataWindow / Web DataWindow Web DataWindow Wizard Web DataWindow Web DataWindow DataWindow

More information

jsp

jsp JSP Allen Long Email: allen@huihoo.com http://www.huihoo.com 2004-04 Huihoo - Enterprise Open Source http://www.huihoo.com 1 JSP JSP JSP JSP MVC Huihoo - Enterprise Open Source http://www.huihoo.com 2

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

untitled

untitled -JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 描述 JSP 表达式语言的语法 认识使用 JSP 表达式的优点 在 JSP 中使用表达式语言 表达式语言简介 5 1 EL 为表达式语言 由两个组开发 JSP 标准标签库专家组 JSP 2.0 专家组 JSP 表达式语言的语法 ${EL Expression} JSP EL 表达式用于以下情形 静态文本 标准标签和自定义标签 表达式语言简介

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

ebook4-12

ebook4-12 12 CGI C G I (Common Gateway Interface) We b P H P C G I H T M L H T T P H T M L We b H T T P We We b I n t e r n e t R F C h t t p : / / w w w. i e t f. o rg / P H P C G I C G A p a c h e C G I P H P

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

What Servlet

What Servlet 7 JSTL 1.1 JSTL JavaServer Pages Standard Tag Library 1.1 JSTL JCP(Java Community Process) Java Web Web JSTL EL Web Java (Scripting) JSTL URL U18N XML SQL JSTL JSTL 6 7-1 JSTL 1.1 简介 7-2 核心标签库 (Core tag

More information

第 章 Struts2 核心组件 2.1 Struts2 动作 (Action) Action 的作用 Struts2 的动作 (Action) 组件是 Struts2 框架的核心 Action 主要有三个作用 : 第一, 为给定的请求封装需要做的实际工作 ; 第二, 在从请求到视图的框

第 章 Struts2 核心组件 2.1 Struts2 动作 (Action) Action 的作用 Struts2 的动作 (Action) 组件是 Struts2 框架的核心 Action 主要有三个作用 : 第一, 为给定的请求封装需要做的实际工作 ; 第二, 在从请求到视图的框 第 章 Struts2 核心组件 2.1 Struts2 动作 (Action) 2.1.1 Action 的作用 Struts2 的动作 (Action) 组件是 Struts2 框架的核心 Action 主要有三个作用 : 第一, 为给定的请求封装需要做的实际工作 ; 第二, 在从请求到视图的框架自动数据传输中作为中介 ; 第三, 帮助框架确定要返回的视图 1. 动作封装工作单元动作在框架中可作为

More information

p.2 1 <HTML> 2 3 <HEAD> 4 <TITLE> </TITLE> 5 </HEAD> 6 7 <BODY> 8 <H3><B> </B></H3> 9 <H4><I> </I></H4> 10 </BODY> </HTML> 1. HTML 1. 2.

p.2 1 <HTML> 2 3 <HEAD> 4 <TITLE> </TITLE> 5 </HEAD> 6 7 <BODY> 8 <H3><B> </B></H3> 9 <H4><I> </I></H4> 10 </BODY> </HTML> 1. HTML 1. 2. 2005-06 p.1 HTML HyperText Mark-up Language 1. HTML Logo, Pascal, C++, Java HTML 2. HTML (tag) 3. HTML 4. HTML 1. HTML 2. 3. FTP HTML HTML html 1. html html html cutehtmleasyhtml 2. wyswyg (What you see

More information

Microsoft Word - 改版式网页全文.doc

Microsoft Word - 改版式网页全文.doc 第 4 章 Dreamweaver CS3 高 级 篇 4.1 表 单 概 述 表 单 是 用 来 收 集 浏 览 者 的 用 户 名 密 码 E-mail 地 址 个 人 爱 好 和 联 系 地 址 等 用 户 信 息 的 输 入 区 域 集 合 浏 览 者 填 写 表 单 的 方 式 一 般 是 输 入 文 本 选 择 单 选 按 钮 或 复 选 框 以 及 从 下 拉 列 表 框 中 选 择

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 第 5 章 解密 Struts 之核心文件 在第 4 章中简单介绍了 Java Web 开发的三大框架之一的 Struts 2 框架的一些基本概念及其开发的流程 在 Struts 2 项目开发中, 有一个重要的过程就是其配置文件的配置 本章将介绍 Struts 核心配置文件的具体作用及其配置方式, 然后介绍 Struts 2 框架中的另一种文件 Action 类文件, 本章的主要内容如下 : 配置文件

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Perl CGI 1 Perl CGI 2 Perl CGI 3 Perl CGI 4 1. 2. 1. #!/usr/local/bin/perl 2. print "Content-type: text/html n n"; 3. print " n"; 4. print " n"; 3. 4.

More information

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

IBM Rational ClearQuest Client for Eclipse   1/ IBM Rational ClearQuest Client for Ecl 1/39 Balaji Krish,, IBM Nam LeIBM 2005 4 15 IBM Rational ClearQuest ClearQuest Eclipse Rational ClearQuest / Eclipse Clien Rational ClearQuest Rational ClearQuest Windows Web Rational ClearQuest Client

More information

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

resp.getwriter().print(j + * + i + = + j * i+ ); resp.getwriter().print(<br/>); protected void dopost(httpservletrequest req, HttpServletRespo 第三章补充案例 案例 3-1 HttpServlet 一 案例描述 1 考核知识点名称 :HttpServlet 编号 : 2 练习目标 掌握 HttpServlet 的 doget() 方法和 dopost() 方法 3 需求分析由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互, 因此, 在 Servlet 接口中, 提供了 一个抽象类 javax.servlet.http.httpservlet,

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 Web (CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 1092 1/ 16 30.75 748 2005 1 1 2005 1 1 : 1 3 100

More information

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

OSWorkflow Documentation

OSWorkflow Documentation OSWorkflow Documentation Update Time: 05/09/15 OSWorkflow Java workflow engine API 理 flow 行 XML 來 流 Database UI 不 流 GUI Designer end user 行 JSP+Servlet 行 OSWorkflow 2.8 說 2.7 2.7 了 OSWorkflow library library

More information

2.4 Selenium Python Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver Google Chrome (Linux, Mac, Windows) Chrome WebDriv

2.4 Selenium Python Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver Google Chrome (Linux, Mac, Windows) Chrome WebDriv Chapter 02 大數據資料爬取與分析 Python Python Requests BeautifulSoup Regular Expression Selenium Pandas Python 2.4 Selenium Python 2.4.1 Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver

More information

untitled

untitled 1 .NET sln csproj dll cs aspx 說 料 料 利 來 料 ( 來 ) 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Click 滑 料 Response 列 料 Response HttpResponse 類 Write 料 Redirect URL Response.Write("!!

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

<4D F736F F D20B5DA3132D5C220CEC4BCFEB5C4C9CFB4ABBACDCFC2D4D82E646F63>

<4D F736F F D20B5DA3132D5C220CEC4BCFEB5C4C9CFB4ABBACDCFC2D4D82E646F63> 第 12 章 文件的上传和下载 本章讲解了在 Java Web 应用程序中常用的文件上传技术 在 Java Web 应用程序中, 可以通过分析上传文件的数据格式来手工实现上传文件的功能, 但这样会编写大量的代码, 而且代码的复用性不强 为此,apache 组织开发了一个用于上传文件的组件 Common- FileUpload, 使用该组件可以非常容易地实现文件上传功能 在 Struts 2 中对该组件进行了封装,

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

《linux从入门到精通》实验指导第三讲:文件及目录操作

《linux从入门到精通》实验指导第三讲:文件及目录操作 Web 交互开发 实验教学指导 实验二 :JavaScript 编程应用 一 实验目的 (5 分 ) 1 掌握 JavaScript 内置对象的使用 ; 2 掌握 JavaScript 事件的使用 ; 3 掌握 JavaScript 图像处理的方法 ; 4 理解 JavaScript 编程的思路 ; 5 掌握 JavaScript 程序执行的过程 二 实验环境 (5 分 ) 1 Windows XP/Windows

More information

PrintWriter s = new PrintWriter(writer); ex.printstacktrace(s); mv.addobject("exception", writer.tostring()); mv.setviewname("error"); return

PrintWriter s = new PrintWriter(writer); ex.printstacktrace(s); mv.addobject(exception, writer.tostring()); mv.setviewname(error); return 本章学习目标 小风 Java 实战系列教程 SpringMVC 异常处理 SpringMVC 文件上传 SpringMVC 处理 JSON 格式数据 SpringMVC 拦截器 SpringMVC 对 restful 风格的支持 1. SpringMVC 异常处理 1.1. @ExceptionHandler 注解处理异常 @ExceptionHandler 该注解使用在异常处理方法上面 1.1.1.

More information

國家圖書館典藏電子全文

國家圖書館典藏電子全文 EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

5-1 nav css 5-2

5-1 nav css 5-2 5 HTML CSS HTML CSS Ê Ê Ê Ê 5-1 nav css 5-2 5-1 5 5-1-1 5-01 css images 01 index.html 02 5-3 style.css css 03 CH5/5-01/images 04 images index.html style.css 05

More information

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ 第 四 章 Filter( 过 滤 器 ) 样 题 A 卷 一 选 择 题 ( 每 小 题 2 分, 共 20 分 ) 1 下 面 选 项 中, 用 于 实 现 初 始 化 过 滤 器 的 方 法 是 ( ) A init(filterconfig filterconfig) B dofilter(servletrequest req,servletresponse resp,filterchain

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

05 01 accordion UI containers 03 Accordion accordion UI accordion 54

05 01 accordion UI containers 03 Accordion accordion UI accordion 54 jquery UI plugin Accordion 05 01 accordion UI containers 03 Accordion accordion UI accordion 54 05 jquery UI plugin 3-1

More information

Microsoft Word - json入门.doc

Microsoft Word - json入门.doc Json 入门 送给亲爱的女朋友, 祝她天天快乐 作者 :hlz QQ:81452743 MSN/Email:hulizhong2008@163.com json 入门 (1) json 是 JavaScript Object Notation 的简称 ; 在 web 系统开发中与 AJAX 相结合用的比较多 在 ajax 中数据传输有 2 中方式 : 文本类型, 常用 responsetext 属性类获取

More information

Eclipse C C++, or

Eclipse C C++,  or Eclipse C C++, Emailctchen@pl.csie.ntut.edu.tw or s1669021@ntut.edu.tw, s2598003@ntut.edu.tw http://pl.csie.ntut.edu.tw/~ctchen, http://www.ntut.edu.tw/~s2598003/ 2004/9/10 (0.02 ) Eclipse http://www.eclipse.org

More information

《linux从入门到精通》实验指导第三讲:文件及目录操作

《linux从入门到精通》实验指导第三讲:文件及目录操作 Web 交互开发 实验教学指导 实验六 : 文件 一 实验目的 (5 分 ) 1 掌握文件处理对象的相关操作; 2 了解文件打印的方法; 3 掌握 FileSystem API 的基本概念以及相关属性 方法与事件 ; 4 掌握 FileReader API 读取文件的内容的方法 ; 二 实验环境 (5 分 ) 1 Windows XP/Windows 7 操作系统的计算机 ; 2 局域网网络环境,

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 理解 Struts 框架的工作原理 掌握使用 Struts 框架开发 Web 应用的基本步骤 熟悉 MyEclipse 对 Struts 开发的支持 Web 框架事实标准 : Web 框架的事实标准 http://struts.apache.org Java EE 主流技术趋势图 主流 Web 框架趋势图 使用 Struts 实现加法器 使用开发的

More information

Oracle高级复制配置手册_业务广告_.doc

Oracle高级复制配置手册_业务广告_.doc Oracle 高 级 复 制 配 置 手 册 作 者 : 铁 钉 Q Q: 5979404 MSN: nail.cn@msn.com Mail: nail.cn@msn.com Blog: http://nails.blog.51cto.com Materialized View Replication 复 制 模 式 实 现 了 单 主 机 对 多 个 复 制 站 点 的 数 据 同 步. 在 主

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled Work Managers 什 Work Managers? WebLogic Server 9.x 行 (thread) 理 thread pool 數量 立 execute queues 來 量 理 thread count, thread priority 參數 理 thread pool 數量? WebLogic Server 9.x 理 行 (thread) (self-tuning) 句

More information

Microsoft Word - D2Z

Microsoft Word - D2Z 第 章 Struts 2 基础 Struts 是 Apache 软件基金会赞助的一个开源项目, 它最初是 Jakarta 项目中的一个子项目 Struts 2 是以 Webwork 设计思想为核心, 吸收原 Struts 的优点而形成的, 旨在帮助程序员更方便地运用 MVC 模式来开发 Java EE 应用 2. 1 Struts 2 框架开发入门 2.1.1 MVC 基本思想 MVC 是一种通用的

More information

第二章 JSP 开发环境搭建 知识目标 : 1. 了解 JSP 的运行环境 ; 2. 熟悉 JSP 环境的搭建 ; 3. 能独立搭建出 JSP 环境 教学目标 : 1.JDK 的安装 ; 2.Tomcat 的安装 ; 3.MyEclipse 的使用 ; 4. 第一个 JSP 程序 内容框架 : JS

第二章 JSP 开发环境搭建 知识目标 : 1. 了解 JSP 的运行环境 ; 2. 熟悉 JSP 环境的搭建 ; 3. 能独立搭建出 JSP 环境 教学目标 : 1.JDK 的安装 ; 2.Tomcat 的安装 ; 3.MyEclipse 的使用 ; 4. 第一个 JSP 程序 内容框架 : JS 第二章 JSP 开发环境搭建 知识目标 : 1. 了解 JSP 的运行环境 ; 2. 熟悉 JSP 环境的搭建 ; 3. 能独立搭建出 JSP 环境 教学目标 : 1.JDK 的安装 ; 2.Tomcat 的安装 ; 3.MyEclipse 的使用 ; 4. 第一个 JSP 程序 内容框架 : JSP 环境搭建 JSP 的运行环境 第一个 JSP 项目 安装与配置 JDK 安装与配置 Tomcat

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 友乾营 报表的 SQL 植入风险 规避风险 : 让你的报表变的安全起来 SQL 植入的概念 恶意的 SQL 归根结底 : 执行了不该允许执行的 SQL 命令, 达到非法的目的 常见案例 骗过登录验证非法获取账号信息篡改 删除数据 为什么存在 SQL 植入 植入原理 如何攻击 特殊的输入参数 未处理特殊字符 -- # 数据库配置不合理 植入原理 : 案例 1, 特殊输入参数 union or 猜表名

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

JBuilder Weblogic

JBuilder Weblogic JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC

More information

XHTML width/height bdo a code href object charset codebase hreflang archive lang type alt dir name name xml:lang rel/rev align shape/coords hspace/vsp

XHTML width/height bdo a code href object charset codebase hreflang archive lang type alt dir name name xml:lang rel/rev align shape/coords hspace/vsp XHTML CSS CSS CSS DOCTYPE Switch XHTML width/height bdo a code href object charset codebase hreflang archive lang type alt dir name name xml:lang rel/rev align shape/coords hspace/vspace big tabindex accesskey

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK 2 l 跨裝置網頁設計 Android ios Windows 8 BlackBerry OS Android HTML 5 HTML 5 HTML 4.01 HTML 5 CSS 3 CSS 3 CSS 2.01 CSS 3 2D/3D PC JavaScript

More information