Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

luotf/JavaEE_demo

Open more actions menu

Repository files navigation

JavaEE_demo

JavaEE课堂小demo

实验一、Action的实现与配置(actionApp2)

1. 分别创建名为actionApp1和actionApp2的web应用。两个web应用中都包含以下三个jsp页面:
   * login.jsp:用户登录页面,设为web应用的首页。页面中应该包括用户名和密码的输入框以及登录和注册按钮。
   * welcome.jsp:登录成功页面。页面中要包括“欢迎你,xxx”、“服务器处理结果:msg”(Action中封装的处理结果信息)和“服务器访问次数:n”这三行信息,其中,    xxx为访问者在login页面提交的用户名, msg为服务器在判断用户名和密码一致后返回的信息(例如“登录成功”)或者为用户注册成功后返回的信息(例如“注册成功”),n为服务器访问次数的值。
   * error.jsp:登录失败页面。页面中要包括“服务器处理结果:msg”,其中msg为服务器在判断用户名和密码不一致后返回的信息(例如“用户名与密码不一致”)。
2. 对actionApp1的要求:
   * 实现名为Login.Action和Regist.Action的Action类。
   * 在struts.xml文件的Action的配置中使用通配符。
   * 使用ActionContext类实现服务器计数器功能。
3. 对actionApp2的要求:
   * 实现名为LoginRegistAction的Action类。
   * 在struts.xml文件的Action的配置中使用method属性。
   * 使用ActionContext类实现服务器计数器功能。

实验二、Struts2类型转换练习(coverterApps)

新建名为converterApp的web project,该应用允许用户输入一个或多个ISBN编码,要求使用自定义类型转换器将用户输入的字符串数组转换成ISBN类型。
1. 创建Isbn.java类,该类中包含五个字符串属性,分别为图书、国家和语言、出版社、书序码、校验码。(关于13位的ISBN编码构成请看:参考资料)
2. 创建input.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入一个ISBN编码,例如978-7-121-09727-0。
3. 创建ConverterAction.java用以对input.jsp页面进行业务逻辑的处理。
4. 创建show.jsp页面,输出类型转换后的ISBN编码。
5. 创建IsbnConverter.java,在该类中实现类型转换。要求使用全局类型转换器对该类型转换进行注册。
6. 创建input2.jsp页面,该页面中包含一个表单,表单内有三个文本输入框,一个提交按钮。文本输入框用于用户输入三个ISBN编码。
7. 创建Converter2Action.java用以对input2.jsp页面进行业务逻辑的处理。
8. 创建show2.jsp页面,输出类型转换后的三个ISBN编码。
9. 创建IsbnArrayConverter.java,在该类中实现类型转换。要求使用局部类型转换器对该类型转换进行注册。
注:
   【校验码的计算方法如下】:
   假设某国际标准书号号码前12位是:978-986-181-728;
   计算加权和S:
   S = (9x1)+(7x3)+(8x1)+(9x3)+(8x1)+(6x3)+(1x1)+(8x3)+(1x1)+(7x3)+(2x1)+(8x3) = 164;
   计算S÷10的余数M:M = 164 mod 10 = 4;
   计算10 - M 的差N:N = 10 − 4 = 6;
   如果N = 10,校验码是数字“0”;
   如果N为其他数字,校验码是数字N。;
   所以,该书的校验码是6。完整的国际标准书号号码为 ISBN 978-986-181-728-6

实验三、实现Struts2自定义拦截器(intercepterApp)

新建名为intercepterApp的web project,该应用使用拦截器实现访问者的访问权限控制。
1. 创建login.jsp页面,该页面中包含一个表单,表单中有两个文本输入框,分别用于输入用户名和密码。表单的action属性为login。
2. 创建succ.jsp页面,用于输出用户登录成功的信息。
3. 创建error.jsp页面,用于输出用户登录失败的信息。
4. 创建LoginAction类,该类用于处理用户的登录请求,是login的实现类。判断当用户名和密码都为“admin”时方可登录成功,并将用户名保存在session中。
5. 在struts.xml文件中配置名为login的Action。
6. 创建名为AuthorityInterceptor的自定义拦截器类,获取session中的用户名,若用户名不是“admin”,则返回login.jsp页面。
7. 创建index.jsp页面,该页面中仅包含文本“welcome”。
8. 定义并配置自定义拦截器,使得只有名为admin的登录用户可以访问当前这个web应用中的所有页面,其他访问者(包括未登录用户和用户名不是admin的用户)则无权访问。
9. 在浏览器地址栏中输入:http://localhost:8088/interceptorApp/index.action,检查自定义拦截器是否起效。正确情况下,若用户未登录或登录用户名不是admin,则返回login.jsp页面提示用户使用admin用户名登录;若用户使用admin登录成功,则返回到index.jsp页面。

实验四、使用Struts2控制文件的上传与下载(fileUpDownApp)

新建名为fileUpDownApp的web project,该应用使用struts2控制文件的上传与下载。
1. 创建upload.jsp为文件上传页面,上传主题为个人资料的上传。该页面的表单中包含一个用于输入用户名的文本输入框,一个用于选择专业的下拉列表,一个用于选择年级的下拉列表,一个用于上传头像的文件标签,一个用于上传个人简历的文件标签,该表单的action属性为“upload”。要求对该表单中的用户输入进行验证。要求使用校验规则文件为用户名字段进行校验,用户名必须输入并且用户名长度限制在4到20个字符之间。要求手动实现头像上传和个人简历上传的输入验证,头像必须为gif或jpeg类型且小于50k的图像文件,个人简历必须为doc类型且小于2M的文本文件。
2. 创建UploadAction.java,该类为名为upload的action的实现类。该类实现文件上传和过滤的业务逻辑。
3. 创建success.jsp页面,该页面用于显示上传结果,包括用户输入的用户名、头像以及个人简历。头像以图片形式显示,个人简历以超链接的形式显示。
4. 创建download.jsp为文件下载页面,下载主题为课程表。该页面的表单中包含两个下拉列表标签,分别用于选择专业和年级。该表单的action属性设为“download”。
5. 创建DownloadAction.java,该类为名为download的action的实现类。根据选择的专业和年级,生成要下载的文件名,实现下载。注意:专业为中文,因此生成的文件名要求包含中文。
6. 要求使用拦截器限制下载,只允许登录用户下载。
7. 在struts.xml文件中对上述action进行配置。注意struts常量的配置。
8. 要求该应用实现国际化,包括输出的错误信息。

实验五、Spring设值注入(SpringDITest)

新建名为SpringDITest的web project,该应用使用struts2与spring整合,完成用户数据的存储功能。
1. 创建org.vo.User简单类,包括name与pwd两个字段; 
2. 创建org.service.UserService接口,包含一个save(User user)方法;
3. 创建org.serviceimpl.UserServiceImpl类,实现UserService接口,实现save(User user)方法的功能(可以简单给出一个输出语句);
4. 创建org.action.SaveAction类,要求在该action类中实现自动注入UserServiceImpl类对象,完成对页面传入的用户数据进行存储;
5. 创建save.jsp页面,提供录入用户数据的界面,提交后,可请求SaveAction进行存储处理;
6. 创建save_success.jsp页面,SaveAction返回“success”时跳转,显示用户存储成功的提示信息。
7. 创建spring的配置文件applicationContext.xml,指定放在WEB-INF目录中;创建struts.properties文件,设置spring自动装配。

补充实验1:OGNL表达式使用练习(ognl)

1. 新建名为ognlApp的web应用。创建student类,student类中应有学号、姓名、性别、年龄和籍贯等属性。
   为名为ognl的action创建处理类ognlTestAction,在该类中添加student集合,数据如下。
   
   学号	 姓名	 性别	年龄	籍贯
   0901	 张驰	 男	 21	北京
   0902	 李伟	 男	 20	四川
   0903	 王可	 女	 18	广东
   0904	 赵冰	 女	 19	四川
   0905	 谢玫	 女	 21	湖南
   0906	 胡新	 男	 19	四川

2. 要求在index.jsp页面中显示以下内容:获取籍贯是四川的所有学生姓名;获取年龄小于20的第一个学生的姓名;获取最后一个女同学的姓名;
   获取所有年龄为18的学生籍贯;获取名为“李四”的学生的学号。
3. 访问静态成员:要求在index.jsp页面中显示出java.long.Math中的E值;要求在index.jsp页面中显示出系统环境变量“classpath”的值。

补充实验2:Struts标签库使用练习(tagsApp)

新建名为tagsApp的web project。要求实现以下内容:
1. 创建Person类,该类中包含有属性:name(String), birthday(Date)。
2. 在index.jsp中使用bean标签。在bean标签中使用param子标签输入Person实例的属性值:name为tom,birthday为1999-6-1。
   在bean标签体外使用property标签输出该实例的name属性,使用date标签以“yyyy年mm月dd日”的格式输出birthday属性。
3. 创建TagsAction,该类中包含结果参数age,将Person类中的birthday属性值与当前日期的差值作为age的值。
4. 编辑配置文件struts.xml,将TagsAction类作为名为tag的Action的处理类,返回结果为success时对应的逻辑视图是success.jsp。
5. 在index.jsp中使用名为tag的action,并将其处理结果返回页面包含在本页中。
6. 创建success.jsp。在该页中输出action的结果参数age的内容。
7. 在index.jsp中使用url标签输出带参数的url,参数名为id,参数值为101。

补充实验3:Struts表单标签使用练习(formTagsApp)

新建名为formTagsApp的web project。要求实现以下内容:
1. 创建index.jsp页面。在该页面中使用doubleselect标签生成一个级联列表框,级联列表中的数据来源map集合:
   {'四川':{'成都','广元','西昌'},'江苏':{'南京','无锡','苏州'},'安徽':{'合肥','六安','芜湖'}},级联列表的label标签为“请选择城市”。
    (注意:该标签应该放置在一个form标签内,并添加一个提交按钮)
2. 创建result.jsp页面。在该页面中显示用户选择的城市。
3. 创建Book类,该类中包含有属性:name(String),author(String)。
4. 创建BookList类,该类中包含有属性:books(List<Book>)。具体数据请自行编写。
5. 编辑index.jsp页面。在该页面中使用radio标签生成多个单选按钮。label标签为“请选择图书”。
   list属性为BookList类中books属性,listKey为author,listValue为name。
6. 编辑result.jsp页面。在该页面中显示用户所选图书的作者。
7. 创建名为FormTagsAction的action类以完成上述工作,并在struts.xml文件中进行相应的配置。

补充实验4:Struts2输入校验练习(validationApp)

新建名为validationApp的web project,该应用允许用户输入一本图书的相关信息,要求对表单中的每个文件输入框进行输入校验。
1. 创建input.jsp页面,该页面用于输入图书的以下信息:
   字段          名字段类型     校验规则
   书名           String       必须输入;长度在4-80之间
   作者           String       必须输入;长度在4-40之间
   书号(13位ISBN) String       必须输入;长度必须是13位;根据参考资料中的ISBN校验码的计算方法对书号的有效性进行校验。
   出版社         String       文本中必须包含“出版社”一词
   出版日期        Date         日期范围为1900年1月1日到当前日期
   价格            Double       最小值为0.0
   库存数量        Integer 最小值为0
2.创建show.jsp页面,该页面用于显示用户输入的图书的所有信息。
3. 创建名为BookAction的Action类,用以对请求参数进行处理。
4. 要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;
   要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。

补充实验5:Struts2国际化应用实现(i18nApp)

新建名为i18nApp的web project,该应用实现了一个简单的邮件订阅系统。具体要求如下:
1. 创建subscribe.jsp页面,该页面中包含一个表单,表单内有一个文本输入框,一个提交按钮。文本输入框用于用户输入邮箱地址。
2. 创建success.jsp页面,输出action的处理结果和订阅成功的国际化信息。
3. 创建error.jsp页面,输出action的处理结果和订阅失败的国际化信息。
4. 创建基名为mess的全局资源包系统,包括中国大陆地区的中文资源包,中国香港地区的中文资源包。该资源包中包含名为subscribePage,successPage,errorPage三个键,分别用于设置subscribe.jsp、success.jsp、error.jsp三个网页标题的国际化信息。
提示:中国香港地区使用繁体中文。获取繁体中文的简单方法:打开word,输入简体中文内容。选中要转换的文本,点击word菜单【审阅】中的【简转繁】即可获取相应的繁体内容。
5. 创建SubscribeAction业务逻辑,对用户输入的格式作一个简单的格式判断,如果用户输入的内容中有@符号,则认为格式正确,订阅成功;反之,如果不存在@符号,则邮箱地址无效,订阅失败。另外,在该action类中封装一个字符串型的处理结果msg,msg中的内容通过访问全局资源包中的result键来设置,该键的内容比如是“订阅结果”。
6. 为SubscribeAction类创建相应的中国中文资源包和香港中文资源包。具体内容如下:
  (1) subscribe.jsp页面中的文本输入框所需的国际化信息对应该资源包系列中的email键(例如:email=邮箱地址),subscribe.jsp页面中的提交按钮所需要的国际化信息对应该资源包系列中的submit键;
  (2) success.jsp页面中的订阅成功的国际化信息对应该资源包系列中的success键,该消息要求使用两个占位符,第一个占位符用于获取用户输入的邮箱,第二个占位符用于获取当前时间,例如:“邮箱地址abc@edf.com订阅成功,订阅时间是2011年11月3日“;
  (3) error.jsp页面中的访问失败的国际化信息对应于资源包中的error键,该消息要求使用ognl表达式添加一个参数,这个参数是用户输入的邮箱地址,例如:“123.com邮箱地址无效,订阅失败。”
  (4) 选作内容:在设置success键和error键时可以通过getText()方法获取同一资源包中的email键的内容,当email键的内容有变化时,success键和error键也会同步更新。
7. 修改浏览器的语言进行测试。

About

JavaEE课堂小demo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.