servlet与struts2框架实验.docx
- 文档编号:23503519
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:40
- 大小:377.94KB
servlet与struts2框架实验.docx
《servlet与struts2框架实验.docx》由会员分享,可在线阅读,更多相关《servlet与struts2框架实验.docx(40页珍藏版)》请在冰豆网上搜索。
servlet与struts2框架实验
《信息系统设计与开发》
实验指导
学院:
专业:
班级:
学号:
姓名:
学期:
教师:
实验报告
(一)
院系:
信息学院课程名称:
信息系统设计与开发(上)日期:
班级
姓名
专业
学号
实验室
实验名称
Web技术
成绩评定
教师签名
实验目的
1、掌握servlet的配置方法
2、掌握请求过滤器用法
3、掌握lister用法
实验内容
Servlet配置
常用对象
过滤器的用法
实
验
过
程
、
结
果
及
分
析
1、请通过java编写一个客户端,能够把指定网站,指定网页中的所有超级连接打印出来.
答:
可以从以下四步入手,如下:
1.由指定url,返回String格式的源文件
2.从指定源文件(String格式)中输出指定域名开头的所有超链接地址
3.从指定url中输出所有指定域名开头的超链接
源程序见下:
publicclassPrintUrl{
publicvoidmain(Stringargs[]){
PrintUrlpu=newPrintUrl();
Stringurl="
Stringhostname="";
try{
pu.print(url,hostname);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidprint(Stringurl,Stringhostname)throwsIOException{
longcount=pickOut(getSource(url),hostname);
System.out.println("在\""+url+"\"中共有"+count+"个url的域名是:
"+hostname);
}
publiclongpickOut(Stringsource,Stringhostname){
longcount=0;
String[]all=source.split("\"");
for(inti=0;i Stringtemp=all[i]; if(temp.startsWith(hostname)){ System.out.println(temp); count++; } } returncount; } publicStringgetSource(Stringurl)throwsIOException{ Stringsource=""; Stringline=""; URL_url=new.URL(url); java.io.InputStreamstream=_url.openStream(); BufferedReaderreader=newBufferedReader(newInputStreamReader(stream,"gb2312")); while((line=reader.readLine())! =null) source+=line; returnsource; } } 2、请建立一个servlet类用于显示当前的系统时间 package.servlet; importjava.io.IOException; importjava.io.PrintWriter; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; publicclassDateextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ this.doPost(request,response); } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html"); PrintWriterout=response.getWriter(); out.println(" DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">"); out.println(""); out.println("
out.println("
");out.print(newjava.util.Date());
out.println("");
out.println("");
out.flush();
out.close();
}}
实
验
过
程
、
结
果
及
分
析
3当用户进入web应用没有登入时,要求用户必须登入。
1.首先建立了一个登录窗口login.jsp,源程序见下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
请输入用户名
请输入密码
2.创建一个过滤器,验证用户名是否为空,如果为空的话则转为登陆界面login.jsp.否则就进入相应的主界面。
源程序见下
//省略相应包中的类
packageFilters;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
publicclasslogin_filterextendsHttpServletimplementsFilter{
publicvoiddestroy(){
super.destroy();
//TODOAuto-generatedmethodstub
}
publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,
FilterChainarg2)throwsIOException,ServletException{
//TODOAuto-generatedmethodstub
HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
HttpSessionsession=request.getSession();
Stringname=(String)session.getAttribute("admin");
if(name==null){
response.sendRedirect("login.jsp");
}
else{
arg2.doFilter(request,response);
}
}
publicvoidinit(FilterConfigarg0)throwsServletException{
//TODOAuto-generatedmethodstub
super.init();}
}
实
验
过
程
、
结
果
及
分
析
4、请设计一种机制进行网站访问者统计
1.首先建一个计数值的javabean的count;源程序见下:
packageservlet;
publicclassCounter{
privateintcount;//计数值
publicCounter(){
this(0);
}
publicCounter(intcount){
this.count=count;
}
publicvoidsetCount(intcount){
this.count=count;
}
publicintgetCount(){
returncount;
}
publicvoidadd(intstep){
count+=step;
}
}
2.统计访问这个web应用的servletd的在线人数:
源程序见下:
//省略了相应包中的类;
publicclassshowTotalUsersextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
ServletContextcontext=getServletContext();
//从ServletContext中读取counter属性
Countercounter=(Counter)context.getAttribute("counter");
//如果ServletContext中没有counter属性,就创建counter属性
if(counter==null){
counter=newCounter
(1);
context.setAttribute("counter",counter);
}
response.setContentType("text/html;charset=GB2312");
PrintWriterout=response.getWriter();
out.println("
out.println("
");inti=counter.getCount();
out.println("欢迎!
当前"+i+"人数。
");
out.println("");
//将计数器递增1
counter.add
(1);
out.close();
}
}
实验报告
(二)
院系:
信息学院课程名称:
信息系统设计与开发(上)日期:
班级
姓名
专业
学号
实验室
实验名称
Struts框架的结构
成绩评定
教师签名
实验目的
1、掌握struts框架的基本jar包
2、掌握struts应用的基本流程
3、掌握web.xml和struts.xml及action类的写法
4、掌握MVC模式的系统设计思路
实验内容
Struts应用的写法
实
验
过
程
、
结
果
及
分
析
一、创建一个struts技术的用户登入系统,当用户输入用户名是张三、密码是12345,就进入欢迎页面。
否则继续输入
1、strtus应用需要的那些jar包?
(10分)
struts2-core-2.1.6.jar(struts的核心库)
xwork-2.1.2.jar(webwork的核心库)
Ognl-2.6.11.jar(ognl表达式语言。
Struts2支持该EL表达式)Freemarker-2.3.13.jar(表现层框架,定义了struts2的可视见主题)
Commons-logging-1.0.4.jar(日志管理)
Commons-fileupload-1.2.1.jar(文件上传与下载)
2、用户登入界面的设计(20分)
<%@pagelanguage="java"pageEncoding="utf-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
用户登录
propertyvalue="popedom"/> formaction="checkLogin"namespace="/login"> textfieldname="name"label="登陆名称"size="15"> textfield> passwordname="pwd"label="登录密码"size="15"> password> submitvalue="登录"> submit> resetvalue="重置"> reset> form>
实
验
过
程
、
结
果
及
分
析
3、web.xml配置20分)
xmlversion="1.0"encoding="UTF-8"?
>
xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 5、登录action的业务类设计(30分) (1)struts.xml配置如下: xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "http: //struts.apache.org/dtds/struts-2.0.dtd"> (2).LoginAction.java配置如下 packageact; importcom.opensymphony.xwork2.ActionSupport; publicclassLoginActionextendsActionSupport{ privateStringusername; privateStringpassword; publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicStringcheckLogin(){ if(this.username.equals("张三") &&this.password.equals("12345")) returnSUCCESS; else returnLOGIN; } } 实验报告(三) 院系: 信息学院课程名称: 信息系统设计与开发(上)日期: 班级 姓名 专业 学号 实验室 实验名称 OGNL 成绩评定 教师签名 实验目的 1、掌握OGNL的应用场景 2、掌握ognl访问属性、访问方法、访问数组、访问集合等方法 实验内容 常用的标签的使用 OGNL表达式的使用 实 验 过 程 、 结 果 及 分 析 已知OgnlAction类的结构如下: publicclassOgnlActionextendsActionSupport{ privateCatcat; privateMap privateSet privateStringpassword; privateUseruser; privateStringusername; privateList publicOgnlAction(){ users.add(newUser (1)); users.add(newUser (2)); users.add(newUser(3)); dogs.add(newDog("dog1")); dogs.add(newDog("dog2")); dogs.add(newDog("dog3")); 实 验 过 程 、 结 果 及 分 析 dogMap.put("dog100",newDog("dog100")); dogMap.put("dog101",newDog("dog101")); dogMap.put("dog102",newDog("dog102")); } dog类定义如下: publicclassDog{ privateStringname; publicDog(){ } publicDog(Stringname){ super(); this.name=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- servlet struts2 框架 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)