Skip to content

Commit 1ca1489

Browse files
authored
Update README.md
1 parent b9545f7 commit 1ca1489

File tree

1 file changed

+66
-64
lines changed

1 file changed

+66
-64
lines changed

README.md

Lines changed: 66 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,66 @@ JavaEE课堂小demo
1515
* 在struts.xml文件的Action的配置中使用method属性。
1616
* 使用ActionContext类实现服务器计数器功能。
1717
```
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表达式使用练习
1978
2079
```
2180
1. 新建名为ognlApp的web应用。创建student类,student类中应有学号、姓名、性别、年龄和籍贯等属性。
@@ -33,7 +92,7 @@ JavaEE课堂小demo
3392
获取所有年龄为18的学生籍贯;获取名为“李四”的学生的学号。
3493
3. 访问静态成员:要求在index.jsp页面中显示出java.long.Math中的E值;要求在index.jsp页面中显示出系统环境变量“classpath”的值。
3594
```
36-
> ## 补充实验2:Struts标签库使用练习
95+
> ### 补充实验2:Struts标签库使用练习
3796
3897
```
3998
新建名为tagsApp的web project。要求实现以下内容:
@@ -46,7 +105,7 @@ JavaEE课堂小demo
46105
6. 创建success.jsp。在该页中输出action的结果参数age的内容。
47106
7. 在index.jsp中使用url标签输出带参数的url,参数名为id,参数值为101。
48107
```
49-
> ## 补充实验3:Struts表单标签使用练习
108+
> ### 补充实验3:Struts表单标签使用练习
50109
```
51110
新建名为formTagsApp的web project。要求实现以下内容:
52111
1. 创建index.jsp页面。在该页面中使用doubleselect标签生成一个级联列表框,级联列表中的数据来源map集合:
@@ -60,30 +119,8 @@ JavaEE课堂小demo
60119
6. 编辑result.jsp页面。在该页面中显示用户所选图书的作者。
61120
7. 创建名为FormTagsAction的action类以完成上述工作,并在struts.xml文件中进行相应的配置。
62121
```
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输入校验练习
87124
```
88125
新建名为validationApp的web project,该应用允许用户输入一本图书的相关信息,要求对表单中的每个文件输入框进行输入校验。
89126
1. 创建input.jsp页面,该页面用于输入图书的以下信息:
@@ -100,7 +137,7 @@ JavaEE课堂小demo
100137
4. 要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;
101138
要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。
102139
```
103-
> ## 补充实验5:Struts2国际化应用实现
140+
> ### 补充实验5:Struts2国际化应用实现
104141
```
105142
新建名为i18nApp的web project,该应用实现了一个简单的邮件订阅系统。具体要求如下:
106143
1. 创建subscribe.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入邮箱地址。
@@ -116,39 +153,4 @@ JavaEE课堂小demo
116153
(4) 选作内容:在设置success键和error键时可以通过getText()方法获取同一资源包中的email键的内容,当email键的内容有变化时,success键和error键也会同步更新。
117154
7. 修改浏览器的语言进行测试。
118155
```
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

Comments
 (0)