@@ -15,7 +15,66 @@ JavaEE课堂小demo
15
15
* 在struts.xml文件的Action的配置中使用method属性。
16
16
* 使用ActionContext类实现服务器计数器功能。
17
17
```
18
- > ## 补充实验1:OGNL表达式使用练习
18
+ > ### 实验二、Struts2类型转换练习
19
+ ```
20
+ 新建名为converterApp的web project,该应用允许用户输入一个或多个ISBN编码,要求使用自定义类型转换器将用户输入的字符串数组转换成ISBN类型。
21
+ 1. 创建Isbn.java类,该类中包含五个字符串属性,分别为图书、国家和语言、出版社、书序码、校验码。(关于13位的ISBN编码构成请看:参考资料)
22
+ 2. 创建input.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入一个ISBN编码,例如978-7-121-09727-0。
23
+ 3. 创建ConverterAction.java用以对input.jsp页面进行业务逻辑的处理。
24
+ 4. 创建show.jsp页面,输出类型转换后的ISBN编码。
25
+ 5. 创建IsbnConverter.java,在该类中实现类型转换。要求使用全局类型转换器对该类型转换进行注册。
26
+ 6. 创建input2.jsp页面,该页面中包含一个表单,表单内有三个文本输入框,一个提交按钮。文本输入框用于用户输入三个ISBN编码。
27
+ 7. 创建Converter2Action.java用以对input2.jsp页面进行业务逻辑的处理。
28
+ 8. 创建show2.jsp页面,输出类型转换后的三个ISBN编码。
29
+ 9. 创建IsbnArrayConverter.java,在该类中实现类型转换。要求使用局部类型转换器对该类型转换进行注册。
30
+ 注:
31
+ 【校验码的计算方法如下】:
32
+ 假设某国际标准书号号码前12位是:978-986-181-728;
33
+ 计算加权和S:
34
+ S = (9x1)+(7x3)+(8x1)+(9x3)+(8x1)+(6x3)+(1x1)+(8x3)+(1x1)+(7x3)+(2x1)+(8x3) = 164;
35
+ 计算S÷10的余数M:M = 164 mod 10 = 4;
36
+ 计算10 - M 的差N:N = 10 − 4 = 6;
37
+ 如果N = 10,校验码是数字“0”;
38
+ 如果N为其他数字,校验码是数字N。;
39
+ 所以,该书的校验码是6。完整的国际标准书号号码为 ISBN 978-986-181-728-6
40
+ ```
41
+ > ### 实验三、实现Struts2自定义拦截器
42
+ ```
43
+ 新建名为intercepterApp的web project,该应用使用拦截器实现访问者的访问权限控制。
44
+ 1. 创建login.jsp页面,该页面中包含一个表单,表单中有两个文本输入框,分别用于输入用户名和密码。表单的action属性为login。
45
+ 2. 创建succ.jsp页面,用于输出用户登录成功的信息。
46
+ 3. 创建error.jsp页面,用于输出用户登录失败的信息。
47
+ 4. 创建LoginAction类,该类用于处理用户的登录请求,是login的实现类。判断当用户名和密码都为“admin”时方可登录成功,并将用户名保存在session中。
48
+ 5. 在struts.xml文件中配置名为login的Action。
49
+ 6. 创建名为AuthorityInterceptor的自定义拦截器类,获取session中的用户名,若用户名不是“admin”,则返回login.jsp页面。
50
+ 7. 创建index.jsp页面,该页面中仅包含文本“welcome”。
51
+ 8. 定义并配置自定义拦截器,使得只有名为admin的登录用户可以访问当前这个web应用中的所有页面,其他访问者(包括未登录用户和用户名不是admin的用户)则无权访问。
52
+ 9. 在浏览器地址栏中输入:http://localhost:8088/interceptorApp/index.action,检查自定义拦截器是否起效。正确情况下,若用户未登录或登录用户名不是admin,则返回login.jsp页面提示用户使用admin用户名登录;若用户使用admin登录成功,则返回到index.jsp页面。
53
+ ```
54
+ > ### 实验四、使用Struts2控制文件的上传与下载
55
+ ```
56
+ 新建名为fileUpDownApp的web project,该应用使用struts2控制文件的上传与下载。
57
+ 1. 创建upload.jsp为文件上传页面,上传主题为个人资料的上传。该页面的表单中包含一个用于输入用户名的文本输入框,一个用于选择专业的下拉列表,一个用于选择年级的下拉列表,一个用于上传头像的文件标签,一个用于上传个人简历的文件标签,该表单的action属性为“upload”。要求对该表单中的用户输入进行验证。要求使用校验规则文件为用户名字段进行校验,用户名必须输入并且用户名长度限制在4到20个字符之间。要求手动实现头像上传和个人简历上传的输入验证,头像必须为gif或jpeg类型且小于50k的图像文件,个人简历必须为doc类型且小于2M的文本文件。
58
+ 2. 创建UploadAction.java,该类为名为upload的action的实现类。该类实现文件上传和过滤的业务逻辑。
59
+ 3. 创建success.jsp页面,该页面用于显示上传结果,包括用户输入的用户名、头像以及个人简历。头像以图片形式显示,个人简历以超链接的形式显示。
60
+ 4. 创建download.jsp为文件下载页面,下载主题为课程表。该页面的表单中包含两个下拉列表标签,分别用于选择专业和年级。该表单的action属性设为“download”。
61
+ 5. 创建DownloadAction.java,该类为名为download的action的实现类。根据选择的专业和年级,生成要下载的文件名,实现下载。注意:专业为中文,因此生成的文件名要求包含中文。
62
+ 6. 要求使用拦截器限制下载,只允许登录用户下载。
63
+ 7. 在struts.xml文件中对上述action进行配置。注意struts常量的配置。
64
+ 8. 要求该应用实现国际化,包括输出的错误信息。
65
+ ```
66
+ > ### 实验五、Spring设值注入
67
+ ```
68
+ 新建名为SpringDITest的web project,该应用使用struts2与spring整合,完成用户数据的存储功能。
69
+ 1. 创建org.vo.User简单类,包括name与pwd两个字段;
70
+ 2. 创建org.service.UserService接口,包含一个save(User user)方法;
71
+ 3. 创建org.serviceimpl.UserServiceImpl类,实现UserService接口,实现save(User user)方法的功能(可以简单给出一个输出语句);
72
+ 4. 创建org.action.SaveAction类,要求在该action类中实现自动注入UserServiceImpl类对象,完成对页面传入的用户数据进行存储;
73
+ 5. 创建save.jsp页面,提供录入用户数据的界面,提交后,可请求SaveAction进行存储处理;
74
+ 6. 创建save_success.jsp页面,SaveAction返回“success”时跳转,显示用户存储成功的提示信息。
75
+ 7. 创建spring的配置文件applicationContext.xml,指定放在WEB-INF目录中;创建struts.properties文件,设置spring自动装配。
76
+ ```
77
+ > ### 补充实验1:OGNL表达式使用练习
19
78
20
79
```
21
80
1. 新建名为ognlApp的web应用。创建student类,student类中应有学号、姓名、性别、年龄和籍贯等属性。
@@ -33,7 +92,7 @@ JavaEE课堂小demo
33
92
获取所有年龄为18的学生籍贯;获取名为“李四”的学生的学号。
34
93
3. 访问静态成员:要求在index.jsp页面中显示出java.long.Math中的E值;要求在index.jsp页面中显示出系统环境变量“classpath”的值。
35
94
```
36
- > ## 补充实验2:Struts标签库使用练习
95
+ > ### 补充实验2:Struts标签库使用练习
37
96
38
97
```
39
98
新建名为tagsApp的web project。要求实现以下内容:
@@ -46,7 +105,7 @@ JavaEE课堂小demo
46
105
6. 创建success.jsp。在该页中输出action的结果参数age的内容。
47
106
7. 在index.jsp中使用url标签输出带参数的url,参数名为id,参数值为101。
48
107
```
49
- > ## 补充实验3:Struts表单标签使用练习
108
+ > ### 补充实验3:Struts表单标签使用练习
50
109
```
51
110
新建名为formTagsApp的web project。要求实现以下内容:
52
111
1. 创建index.jsp页面。在该页面中使用doubleselect标签生成一个级联列表框,级联列表中的数据来源map集合:
@@ -60,30 +119,8 @@ JavaEE课堂小demo
60
119
6. 编辑result.jsp页面。在该页面中显示用户所选图书的作者。
61
120
7. 创建名为FormTagsAction的action类以完成上述工作,并在struts.xml文件中进行相应的配置。
62
121
```
63
- > ## 实验二、Struts2类型转换练习
64
- ```
65
- 新建名为converterApp的web project,该应用允许用户输入一个或多个ISBN编码,要求使用自定义类型转换器将用户输入的字符串数组转换成ISBN类型。
66
- 1. 创建Isbn.java类,该类中包含五个字符串属性,分别为图书、国家和语言、出版社、书序码、校验码。(关于13位的ISBN编码构成请看:参考资料)
67
- 2. 创建input.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入一个ISBN编码,例如978-7-121-09727-0。
68
- 3. 创建ConverterAction.java用以对input.jsp页面进行业务逻辑的处理。
69
- 4. 创建show.jsp页面,输出类型转换后的ISBN编码。
70
- 5. 创建IsbnConverter.java,在该类中实现类型转换。要求使用全局类型转换器对该类型转换进行注册。
71
- 6. 创建input2.jsp页面,该页面中包含一个表单,表单内有三个文本输入框,一个提交按钮。文本输入框用于用户输入三个ISBN编码。
72
- 7. 创建Converter2Action.java用以对input2.jsp页面进行业务逻辑的处理。
73
- 8. 创建show2.jsp页面,输出类型转换后的三个ISBN编码。
74
- 9. 创建IsbnArrayConverter.java,在该类中实现类型转换。要求使用局部类型转换器对该类型转换进行注册。
75
- 注:
76
- 【校验码的计算方法如下】:
77
- 假设某国际标准书号号码前12位是:978-986-181-728;
78
- 计算加权和S:
79
- S = (9x1)+(7x3)+(8x1)+(9x3)+(8x1)+(6x3)+(1x1)+(8x3)+(1x1)+(7x3)+(2x1)+(8x3) = 164;
80
- 计算S÷10的余数M:M = 164 mod 10 = 4;
81
- 计算10 - M 的差N:N = 10 − 4 = 6;
82
- 如果N = 10,校验码是数字“0”;
83
- 如果N为其他数字,校验码是数字N。;
84
- 所以,该书的校验码是6。完整的国际标准书号号码为 ISBN 978-986-181-728-6
85
- ```
86
- > ## 补充实验4:Struts2输入校验练习
122
+
123
+ > ### 补充实验4:Struts2输入校验练习
87
124
```
88
125
新建名为validationApp的web project,该应用允许用户输入一本图书的相关信息,要求对表单中的每个文件输入框进行输入校验。
89
126
1. 创建input.jsp页面,该页面用于输入图书的以下信息:
@@ -100,7 +137,7 @@ JavaEE课堂小demo
100
137
4. 要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;
101
138
要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。
102
139
```
103
- > ## 补充实验5:Struts2国际化应用实现
140
+ > ### 补充实验5:Struts2国际化应用实现
104
141
```
105
142
新建名为i18nApp的web project,该应用实现了一个简单的邮件订阅系统。具体要求如下:
106
143
1. 创建subscribe.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入邮箱地址。
@@ -116,39 +153,4 @@ JavaEE课堂小demo
116
153
(4) 选作内容:在设置success键和error键时可以通过getText()方法获取同一资源包中的email键的内容,当email键的内容有变化时,success键和error键也会同步更新。
117
154
7. 修改浏览器的语言进行测试。
118
155
```
119
- > ## 实验三、实现Struts2自定义拦截器
120
- ```
121
- 新建名为intercepterApp的web project,该应用使用拦截器实现访问者的访问权限控制。
122
- 1. 创建login.jsp页面,该页面中包含一个表单,表单中有两个文本输入框,分别用于输入用户名和密码。表单的action属性为login。
123
- 2. 创建succ.jsp页面,用于输出用户登录成功的信息。
124
- 3. 创建error.jsp页面,用于输出用户登录失败的信息。
125
- 4. 创建LoginAction类,该类用于处理用户的登录请求,是login的实现类。判断当用户名和密码都为“admin”时方可登录成功,并将用户名保存在session中。
126
- 5. 在struts.xml文件中配置名为login的Action。
127
- 6. 创建名为AuthorityInterceptor的自定义拦截器类,获取session中的用户名,若用户名不是“admin”,则返回login.jsp页面。
128
- 7. 创建index.jsp页面,该页面中仅包含文本“welcome”。
129
- 8. 定义并配置自定义拦截器,使得只有名为admin的登录用户可以访问当前这个web应用中的所有页面,其他访问者(包括未登录用户和用户名不是admin的用户)则无权访问。
130
- 9. 在浏览器地址栏中输入:http://localhost:8088/interceptorApp/index.action,检查自定义拦截器是否起效。正确情况下,若用户未登录或登录用户名不是admin,则返回login.jsp页面提示用户使用admin用户名登录;若用户使用admin登录成功,则返回到index.jsp页面。
131
- ```
132
- > ## 实验四、使用Struts2控制文件的上传与下载
133
- ```
134
- 新建名为fileUpDownApp的web project,该应用使用struts2控制文件的上传与下载。
135
- 1. 创建upload.jsp为文件上传页面,上传主题为个人资料的上传。该页面的表单中包含一个用于输入用户名的文本输入框,一个用于选择专业的下拉列表,一个用于选择年级的下拉列表,一个用于上传头像的文件标签,一个用于上传个人简历的文件标签,该表单的action属性为“upload”。要求对该表单中的用户输入进行验证。要求使用校验规则文件为用户名字段进行校验,用户名必须输入并且用户名长度限制在4到20个字符之间。要求手动实现头像上传和个人简历上传的输入验证,头像必须为gif或jpeg类型且小于50k的图像文件,个人简历必须为doc类型且小于2M的文本文件。
136
- 2. 创建UploadAction.java,该类为名为upload的action的实现类。该类实现文件上传和过滤的业务逻辑。
137
- 3. 创建success.jsp页面,该页面用于显示上传结果,包括用户输入的用户名、头像以及个人简历。头像以图片形式显示,个人简历以超链接的形式显示。
138
- 4. 创建download.jsp为文件下载页面,下载主题为课程表。该页面的表单中包含两个下拉列表标签,分别用于选择专业和年级。该表单的action属性设为“download”。
139
- 5. 创建DownloadAction.java,该类为名为download的action的实现类。根据选择的专业和年级,生成要下载的文件名,实现下载。注意:专业为中文,因此生成的文件名要求包含中文。
140
- 6. 要求使用拦截器限制下载,只允许登录用户下载。
141
- 7. 在struts.xml文件中对上述action进行配置。注意struts常量的配置。
142
- 8. 要求该应用实现国际化,包括输出的错误信息。
143
- ```
144
- > ## 实验五、Spring设值注入
145
- ```
146
- 新建名为SpringDITest的web project,该应用使用struts2与spring整合,完成用户数据的存储功能。
147
- 1. 创建org.vo.User简单类,包括name与pwd两个字段;
148
- 2. 创建org.service.UserService接口,包含一个save(User user)方法;
149
- 3. 创建org.serviceimpl.UserServiceImpl类,实现UserService接口,实现save(User user)方法的功能(可以简单给出一个输出语句);
150
- 4. 创建org.action.SaveAction类,要求在该action类中实现自动注入UserServiceImpl类对象,完成对页面传入的用户数据进行存储;
151
- 5. 创建save.jsp页面,提供录入用户数据的界面,提交后,可请求SaveAction进行存储处理;
152
- 6. 创建save_success.jsp页面,SaveAction返回“success”时跳转,显示用户存储成功的提示信息。
153
- 7. 创建spring的配置文件applicationContext.xml,指定放在WEB-INF目录中;创建struts.properties文件,设置spring自动装配。
154
- ```
156
+
0 commit comments