第一篇:java web邮件学习
commons-fileupload-1.1.1.jar 上传文件总结:
1、验证是否要处理的是上传文件
ServletFileUpload.isMultipartContent(request)
2、创建DiskFileItemFactory 对象并对其初始化设置
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(20 * 1024);
factory.setRepository(factory.getRepository());
3、创建ServletFileUpload 对象并设置其编码方式
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(“gbk”);
4、开始获取上传文件的集合:
formlists = upload.parseRequest(request);
5、设置上传文件允许的大小
int size = 2 * 1024 * 1024;
6、循环遍历formlists集合来根据其元素的类型(普通表单域还是文件域)进行赋值还是上传功能 Iterator iter = formlists.iterator();
while(iter.hasNext()){
FileItem formitem =(FileItem)iter.next();
7、是文件域则执行上传:
具体做法:(1)、获取文件路径全名:String name = formitem.getName();
(2)、判断文件名后缀是否符合要求:!name.endsWith(“mp3”)
(3)、判断文件大小是否符合要求formitem.getSize()> size
If/else(4)、都符合要求则上传:
第一步:判断文件的名称不能为空(formitem.getName())、大小不能为0
(formitem.getSize()),如果不符合要求则continue执行下一循环
第 二步: 获取文件的单纯文件名称: name.substring(name.lastIndexOf(“”)
+ 1, name.length());
第 三步: 设置保存到的服务器地址:fileDir(“file/”)+ “” + 单纯名称;File saveFile = new File(服务器地址);
第 四步: 上传: formitem.write(saveFile);、是普通表单域则将表单项的值赋值给相关对象变量,如JavaBean(每一次循环将该次对应的表单项的值付
给适当的变量对象)
String formname = formitem.getFieldName();获取普通表单项的名称
String con = formitem.getString(“gbk”);
用formname.equals(““)来判断
下载文件具体方法:
1、获取服务器下载地址并将此地址字符串进行编码:
String path=request.getParameter(“path”);
2、创建下载目录:
File file = new File(path);获取普通表单项的值并编码 path=new String(path.getBytes(“iso-8859-1”));
3、创建文件字节输入流
InputStream in = new FileInputStream(file);
4、创建输出流对象
OutputStream os = response.getOutputStream();
5、设置该输出流的应大头、编码等配置
response.addHeader(“Content-Disposition”, “attachment;filename=”
+ new String(file.getName().getBytes(“gbk”),“iso-8859-1”));
response.addHeader(“Content-Length”, file.length()+ “");response.setCharacterEncoding(”gbk“);
6、开始下载:
int data = 0;
while((data = in.read())!=-1)
{ os.write(data);}
7、关闭输入输出流
os.close();
in.close();
邮件接收的方法:
DAO:
1、创建邮件接收类:Store
思路:创建Properties类并添加属性->创建Session对象->创建store对象并连接到服务器和编写关闭方法
2、获取全部已读邮件的名称集合的方法 返回String3、获取全部已读或未读邮件的内容的方法返回List(包含邮件信息和附件状态,但不包含具体附件内容)思路: 获取Store对象->获取POP3Folder对象->打开POP3Folder邮件夹->创建FetchProfile预提取对象并对其添加两个常用属性->定义Message[]对象数组并设为null->获取全部已读邮件的uid字符串->若字符串不为空则->转换为数组并进行排序->根据要求的已读或者未读条件来获取全部已读或未读邮件信息给Message[](folder.search)->后退三步-若字符串为空则->获取全部未读邮件信息Message[]---开始提取上述邮件数组中每一个邮件的详细信息->循环遍历Message[]数组->定义MimeMessage对象并赋值为数组元素->获取邮件ID、发件人、邮件时间->根据编码类型获取邮件主题->由自定义方法获取此邮件的附件对象(String[])->message[i].getFlags().getSystemFlags().toString();->如果判断返回的邮件有附件,则获取附件设置为1,否则设置为0(来控制页面中的附件图标的显示)->将此邮件信息对象添加到List中。
4、向数据库中添加已读邮件的标记的方法:iduid address5、获取指定邮件中附件的方法:此方法中重点是对邮件内容的编码处理,故这里重点介绍主要功能语法: 思路:(1)定义该邮件名称对应的所有附件连接字符串为超链接(附件之间用空格隔开)(String,由多个”附件序号=&附件名称=&邮件序号”组成),定义邮件名称字符串(已知条件)
(2)Multipart multipart =(Multipart)part.getContent();得到该邮件所有的内容集合,然后对其遍历以获取每一个multipart中每一个BodyPart->判断此BodyPart是否为附件,若是附件则获取该附件的名称 并添加到(1)中的连接字符串中,连接字符串中附件序号为遍历变量j
最后: int counts = multipart.getCount();
BodyPart对象的个数 //返回MimeMultipart对象中保存的//关闭流 response.setContentType(”application/octet-stream“);
for(int i = 0;i < counts;i++){} getMailAttach(multipart.getBodyPart(i), emailv);
并返回String[] obj = { 邮件主题内容, fileName1 };
6、对输入的UTF7编码的内容进行转码的方法
Servlet:
下载附件servlet:
思路:设置response.setContentType(”text/html;charset=GBK“)、request.setCharacterEncoding(”GBK“)->创建HttpSession对象->创建ServletOutputStream对象->获取页面传递变量:附件序号、附件名称;获取session变量”message“->将附件名称进行编码处理:filename=new
String(filename.getBytes(),”ISO-8859-1“)->response.setHeader(”Content-Disposition“,”attachment;filename=“+filename)->由”message”获取Multipart对象->由Multipart对象获取BodyPart对象->由BodyPart对象获取InputStream对象->开始下载:
int c=0;
while((c=is.read())!=-1){out.write(c);}
收取邮件servlet(邮件的全部具体信息):
1、邮箱登陆的验证方法:
思路:获取表单传递值的host username pwd->用DAO(1)中的方法进行用户验证如果正确->创建HttpSession对象->用session.setAttribute的方法保存登陆的用户信息(以上三个)->
store.close();
2、获取当前分页页面中已读或未读的全部邮件的集合(包含邮件信息和附件状态,但不包含具体附件内容)思路:创建HttpSession对象,并获session变量host username pwd和request变量”flag“和”Page“-> request.setAttribute(”flag“, flag)->根据request变量”page”来判断是否已经开始分页浏览->若没有则先执行DAO(3)方法获取已读或未读的全部邮件集合,然后执行自定义分页类中的初始化方法获取上述集合中的第一页中的邮件集合,并request.getSession().setAttribute(”pagination", 分页类的实例化);->若已经开始分页,则将当前页page赋值为已经存在的session类型的分页类对象中的getPage方法中返回的page,并且执行自定义分页类中的类似初始化方法的获取当前页面集合的方法(具体看程序)
3、查看邮件详细信息:(获取指定邮件的信息)
思路:同DAO(3)中的方法相似 不同之处是:DAO(3)查询的是全部已读或未读 而本案查询的是指定的邮件ID TOOLS:
本案中主要为分页类的编写:
1、初始化获取第一页的集合2、获取已分页的当前页面的集合3、获取全部记录数
4、获取最大页数
5、获取当前页数
6、获取分页导航
第二篇:javaWeb学习[小编推荐]
JavaWeb学习笔记___d9.txt
2010-12-14 22:51
Session(会话)
Session对象
1、存在于服务器端
2、依赖于线程
3、Session的生命周期,跟一次浏览器窗口有关,只要窗口不关闭,Session便存在,所以称会话。
Session1、技术内核使用cookie:
session参在与服务器端
服务器端为多个session创建不同的session id
把session id以cookie的形式送入到客户端
request.getSession()内涵是:在cookie中查找
session id,若cookie中存在sessionId,则根据
sessionId,将sessionID对应的session找到,并返回;若cookie中并不存在sessionID,服务器端创建session,并将sessionID写入到Cookie中。
2、当关掉对话窗口(结束一次会话)时,session并没有被删除,只是关掉对话窗口时,cookie被清空
无法再获得sessionID,无法找到对应的session,但是session还是存在于服务器端。
若想真正删除session,需要调用HttpSession中的invalidate()方法,使得session失效。
3、服务器为了考虑效率,不会让无用的session存在很久,Http协议是无连接协议,服务器端无法判断客户端是否关闭“会话”,所以服务器设置了失效时间。若用户在了段时间内,不操作session,则系统删除session。
我们可以设置此时间setMaxInactiveInterval(),但不推荐用户自行设置。
4、session技术在很大程度上,依赖于Cookie,若Cookie被禁用,或浏览器不支持Cookie,则session就无法使用。
5、为了解决第四点所引申的session不可用的问题。我们使用URL重写,将sessionID通过地址栏提交参数,发给服务器端。
使用response.encodeURL()在地址栏中加载sessionID通过
request.getParameter(jsessionid)得到sessionID
a、String url encodeURL(String url);通过超链接,重新发出请求,此请求会在地址之后自动加上sessionID及其ID值,此方法又被子称为URL重写,或重新封装。
b、String url encodeRedirectURL(String url);将地址封装成sendRedirect方法所需要的地址,并在此地址后加入sessionID
Servlet API小结:
HttpServletRequest:接口
1、setAttribute()、getAttribute()、getAttributeNames
getParameter()//只能获得表单中的内容
2、getCharacterEncoding()、setCharacterEncoding()
获得、设置request中的数据编码方式
3、getContentType()得到MIME,即IE文件打开的方式
4、Cookie[] getCookies()
得到当前所有的cookie5、getSession()
获得或创建session6、getRequestDispatcher(String path)将目标页面封装,为了forward()进行页面转向。
7、getRequestedSessionId()得到一个session的id
总结:
request对象封装了客户端的请求和相关信息。
包括:
1、cookie2、封装http协议的报头(请求方式、请求服务器的端口、请求服务器ip地址、编码方式、请求的项目用的名字、请求消息的长度、浏览器的信息、客户端信息„„)
3、表单数据
HttpServletResponse:接口(响应)
用它跟客户端联系,并且向客户端发送数据
1、getCharacterEncoding()得到向客户端发送数据的默认编码方式。
2、getContentType()得到向客户端发送数据的默认类型(html或者jpeg等等)。
3、getOutputStream()得到与客户端建立的输出字节流,传输二进制。
4、getWriter()得到与客户建立的输出字符流,传输文本文件。
5、setCharacterEncoding()设置的是要发送给客户端的数据的编码方式。
6、setContentType(String type)设置并告知客户端,执行这些二进制时,用何种类型打开(html、jpeg等等)。
7、addCookie(Cookie cookie)将cookie的键和键值成对的送到客户端
8、一些的set方法用来指定客户端运行时的一些属性。例:缓存、打开方式、消息头的控制等等
9、encodeURL(String url)、encodeRedirectURL(String url)**在地址后追加session的id,用来实现cookie被禁用后,session依然可以使用。
10、sendRedirect(String location)页面的重定向
Cookie:类
1、Cookie(String name,String value)创建Cookie并将键,键值,存入到Cookie中
2、getMaxAge(int)设置Cookie的生命服周期,当参数是负数时:窗口(会话)被关掉时,清空Cookie3、getName()获得Cookie中的键
4、getValue()获得Cookie中的健值
HttpSession:接口
1、getAttribute(String name)、setAttribute(String name)
2、getId()获得session的唯一标识id3、getMaxInactiveInterval()、setMaxInactiveInterval()得到和设置session的失效时间
4、invalidate()使得session失效
5、isNew()布尔类型,判断session是否是新创建的HttpServlet:类
1、doGet(HttpServletRequest req,HttpServletResponse resp)
当用户以get方式发出请求时,servlet调用此方法
2、doPost(HttpServletRequest req,HttpServletResponse resp)当用户以post方式发出请求时,servlet调用此方法
3、public void init()throws ServletException
用户第一次请求servlet的时候,容器需建立servlet对象,同时调用init()方法
4、service(ServletRequest req,ServletResponse res)
开辟多线程,并根据用户提交的方式,选择调用doGet()还是doPost()方法
此方法不建议重写
第三篇:javaweb课程设计
课程设计:基于Java Web的讨论区BBS系统的设计与实现
本系统要求实现以下主要功能:
(1)登录:提供用户登录系统的功能,需要输入用户名和密码
(2)注册:提供用户注册的功能,需要输入用户名、密码、密码确认、Email、QQ
(3)修改注册信息:提供用户修改注册信息的功能,可以修改密码、Email、QQ
(4)浏览讨论区:用户登录后就可以浏览系统中已存在的讨论区,用户可以查看某讨论
区的详细信息,也可以进入该讨论区浏览已发表的帖子,以及回帖
(5)创建讨论区:用户可以创建讨论区,每个讨论区包含一个名称和顺序号,每个讨论
区的名称在系统中是唯一的,顺序号表示讨论区在列表中的排序
(6)修改讨论区:提供讨论区名称和顺序号的修改功能
(7)删除讨论区:提供讨论区删除的功能,方便管理员进行讨论区管理
(8)浏览帖子:用户进入一个讨论区后,可以看到帖子列表,包含帖子主题、作者、创
建时间、回复次数,点击一个帖子,可以查看该帖子的内容和回帖
(9)创建帖子:用户进入一个讨论区后,可以选择创建一个新帖子,需要输入帖子标题
和内容
(10)修改帖子:提供给管理员使用,修改帖子标题和内容
(11)删除帖子:提供给管理员使用,方便管理员进行帖子整理
(12)回复帖子:用户在浏览帖子信息的时候,可以进行回复
第四篇:javaweb学习心得
学习心得
在写心得之前总结下中级部分学习的内容,我们的中级部分主要学习了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,过滤器,监听器,JSTL,EL,jQuery,Ajax。
下面就各个模块进行总结:在学习html时,我是对这个没太在意的,因为里面全部是标签,没有需要理解的内容,全部是属于识记的,所以在学习时相对轻松,对于html常用的标签都是非常清楚的form中的十一种类型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的标签如div,table,span,select都是重要的标签.Css的学习:虽然说在标签中也可以定义样式,但是这么做看起来不是那么明智,我在学CSS时还是比较努力的,所有的样式效果都测试过,并且写了相应的案例,只是过了不到3个月就忘了一大半,很多时候都是查文档才能写出来的,虽然CSS对于我们来说不必要非常精通,但是我觉得掌握的东西越多,以后的工作就越轻松,所以在中级结束后也会去看看前面的笔记和案例。
Javascript:js 我认为是最重要的,甚至于超过servlet,jsp,在上课期间,讲的内容还是比较少的,就javascript中创建对象来说吧,应该只讲过3中方法,虽然在一般的情况下是用不上的,但是我觉得还是有必要学习的,这样有助于看懂别人写的框架,在javascript这部分学习中讲的最多的还是dom操作,不过我觉得用dom操作太繁琐了,写的代码太多,而且效率看起来也不高,后面就是讲的事件,事件也算是简单的,只是对触发的事件进行相应的响应。除了这些就是javascript流程控制,对象一些基本语法,这些和java类似,所以在上课时没有讲得太多。
Xml: Markup Language可扩展标记语言。它是由SGML(Standard Gerneralized Markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在XML技术里,可以编写一个文档来约束XML文档的书写规范,称之为XML约束。本文主要介绍DTD与Schema两种约束,在这里学习了dtd,scheama,定义XML约束,这部分的学习是我感觉最累的一部分,DTD还算好,SCheama里面的内容,现在都忘了,没有任何记忆,只知道在XML约束中有着两中方式,还好这些在刚开始工作时是用不上的,因此我也没有用很多时间来学习。
Servlet:我觉得是比较简单的,可能是因为它是java代码,容易理解。首先讲的是开发环境的配置,安装tomcat,了解tomcat下的目录,以及web工程下的目录。后来是讲了servlet的访问方式,post和get的区别,处理中文乱码是servlet中一个重要的知识点,几乎每个项目都会遇到这个问题。主要乱码有get,post乱码,是通过设置request或者response的编码方式来实现的。Servlet间的跳转方式有重定向和转发,对于重定向和转发的区别,现在理解的很透彻了,重定向是不能获取request中参数,是客户端的两次请求,而转发是服务器内部跳转,不过,两种在设置过滤器的情况下,都要通过过滤器才能跳转。Servlet的生命周期是笔试的必考题,其实这是很简单的,只需要理解,没必要死记硬背的,session算是重要的知识点,很多数据都是存储在内存中,如购物车,用户信息等,还可以对session设置生存时间。说到session就必须说说四种会话跟踪技术,cookie,URL重写,表单域隐藏和session。
JSP:JSP实际上和servlet是一样的,只不过两者侧重点不同,JSP的内置对象和作用域大致是一样的,JSP中还有动作,常用的有操作JavaBean的动作,页面跳转的动作,以及包含的动作。这里重点提到两种包含的区别。在JSP还讲过jstl和EL表达式,都是基础的应用,不过写自定义的标签还是要有一定的java基础的,我开始不太理解标签的解析过程,后来看了几个例子,发现自定义的已不是那么难。
jQuery:jQuery可以说是中级部分学的最好的,主要是它方便了,特别是选择器,而且避免了一些浏览器的差异,所以在学习jQuery后,就再也不想用javascript来获取元素了。不仅如此,jQuery中封装的Ajax操作也是非常简单,不需要自己封装一个类,$.get和$.post 能够省去很多麻烦,jQuery的监听事件也是很简单,不需要在标签中添加对应事件,可以动态的绑定事件。还有就是dom操作更是方便。我在学习完Ajax,json后就发现,即使是没有JSP,也能做出一个动态页面出来,只是会存在效率问题。
总结:虽然说这上面的知识大部分都掌握了,但是能否灵活运用才是重点,所以在今后的学习中多思考问题是否有多种解决方法。
第五篇:JavaWeb实习报告
武汉工程大学计算机科学与工程学院
生产实习报告
JavaWeb实习报告
一、实习目的与任务
为了锻炼我们的实践动手能力,提高我们分析问题、解决问题的能力,培养我们的工作意识和团队合作的意识,了解软件开发的过程和基本流程,以便于帮助我们能够在大四毕业时可找到一份客观的工作,我们在大四刚开学就开始了生产实习。
这次实习的主要任务是Java Web软件开发,学习Java开发中比较典型且经常用到的几个知识,其中包括Jsp、Servlet、Html、JDBC等等,另外,Java开发中也必须要用到数据库,因此实习中还加入了Mysql数据库的学习。掌握了这些基本知识之后,就开始真正的项目开发,而且此次我们所要开发的项目是有关博客页面的项目,并完成老师指定的功能。
二、实习地点
重庆足下科技有限公司
三、实习内容和要求
我们这次实习,在校外也就是软帝公司总共是十天,开始几天基本上是每天学习一个方面的内容,大概学习了六天其中包括Jsp、Servlet、Html、JDBC、Mysql等等,剩下几天就是项目时间,做出一个博客开发的项目。大致内容如下:
一、Java语言简介
Java语言Java是由Sun微系统公司所发展出来的程序语言,它是一种面向地向的语言,Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执行的代码,而是产生一种中间码叫作 ByteCode,这种代码必需在透过 Java 的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种Java的直译器,就能解读ByteCode也就能执行Java编译过的程序,故与Java程序是在那种平台上被编译的,就完全没有干系了。
Java写出来的程序可分为两类,分别是Java Applet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个浏览器,且就是使用Java程序所发展出来的。最常见的Java程序包括应用程序和applets。应用程序是单独的程序,诸如HotJava浏览器软件就是用Java语言编写的。
Applets类似于应用程序,但是它们不能单独运行,Applets可以在支持Java的浏览器中运行。Applet主要是内置于HTML网页中,在浏览时发挥作用。
Java的目标是为了满足在一个充满各式各样不同种机器,不同操作系统平台的网络环境中开发软件。利用Java程序语言,可以进行网页开发,其中包括静态语言开发与动态网页开发,可以在网页中加入各式各样的动态效果,可以放上一段动画,加入声音,也可以建立交互式网页等。
二、Html语言
Html是超文本标记语言,它是一种非严格的标记语言,它是web开发的基础,也是制作网页的基础,纯html的页面是静态的。
Html它由head和body两部分组成,所写的内容一般都是放在body中,其中可以添加Form表单域,其中属性 Action表示提交的动作,也就是提交到那个页面,可表示为Action=“http://www.xiexiebang.com”;Method属性表示提交的方法,一般为设为post;在Form表单域中添加table表,table中的属性只有很多,常用的有width、height、align、colspan
武汉工程大学计算机科学与工程学院
生产实习报告
Mysql是一个关联数据库,它将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性。Mysql的Sql指得是“结构化查询语言”,Sql是用于访问数据库的最常用标准化语言。同时,Mysql软件也是一种“开放源码”的软件,意味着任何人都能使用和改变软件。任何人都能从Internet下载Mysql软件,而无需支付任何费用。如果愿意,你可以研究源码并进行恰当的更改,以满足你自己的需求。Mysql软件采用了GPL(GNU通用公共许可证),定义了在不同情况下可以用软件作的事和不可作的事。数据库服务器具有快速、可靠和易于使用。
Mysql服务器还有一套实用的特性集合,在基准测试主页上,给出了Mysql服务器和其他数据库管理器的比较结果。Mysql支持多种连接,包括TCP/IP、ODBC和JDBC等多种数据库连接途径,而我们此次实习用到的是JDBC数据库连接方法,这一点在下面会讲到。
此次实习我们主要学习了如何在Mysql数据库中建立表格,如何执行Sql语句等等。首先,打开Mysql编写框,执行语句show databases,即可查看Mysql中有哪些数据库,运用create+数据库名语句可建立想要的数据库,运用use+数据库名即可进入对应的数据库。
进入数据库之后,就可以执行数据库中的增、删、查、改等Sql语句了,运用create table +表名(表中所需要的元素),这样就可以建立一张表了,运用desc+表名就可以查看表,运用Sql语句“select * from +表名”就可以查看表中的所有数据,运用“insert into „„”语句可以向表中添加数据;运用“update +表 set „„ Where„„”可以更改表中指定的某项数据;运用“delete +表 where „„”语句可以删除表中的某项数据„„
四、JDBC数据库连接
Java中的JDBC,JDBC是Java Data Base Connectivity的缩写,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
连接数据库的方法有一个模板,代码如下: public class DBManager { private static final String URL=“jdbc:mysql://localhost:3306/test”;private static final String USER=“root”;private static final String PASSWORD=“123”;private static Connection conn=null;
public static Connection getConn(){ try {
if(conn==null){
//注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
conn=DriverManager.getConnection(URL,USER,PASSWORD);
} } catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();}
return conn;} } 以后运用数据库连接基本上都是用这个模板,方便又有效,而且在其他地方连接数据
武汉工程大学计算机科学与工程学院
生产实习报告
六、Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet生成响应内容并将其传给Server,响应内容动态生成,通常取决于客户端的请求。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法,用的比较普遍的是doPost()方法。举例如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//
1、获取id
String sid=request.getParameter(“id”);
int id=Integer.parseInt(sid);
//
2、根据id查询到对应的学生信息
StuDAO sdao=new StuDAO();
StuDTO stu=sdao.queryStu(id);
//
3、将stu传递到studentModify.jsp页面显示
request.setAttribute(“stu”,stu);request.getRequestDispatcher(“studentModify.jsp”).forward(request,response);我们同样是以学习建立学生信息管理系统为例来学习Servlet的,Servlet与JSP差不多,最主要的差别是JSP是实现普通静态HTML和动态HTML混合编码的技术,Servlet则是web页面和服务器之间的连接物,而这基本上没什么区别。
在编写学生信息管理系统的时候,只不过在昨天编写的基础上,将某些JSP文件运用Servlet表示,像那些只做显示用的JSP页面不做变化,而中间有调用StuDAO中的方法的JSP页面,它们不做显示用,而是要与数据库联系起来,像这些JSP页面就可以转换成相应的Servlet,其中的代码与JSP中的几乎一样,这样处理之后,减少了页面,不过功能没有变化,更加方便了!
四、实习总结及分析
这次实习主要是学习Java Web开发方面的相关知识,主要的有JSP、Servlet、HTML,另外还有JDBC,Mysql数据库等等。
首先是JSP,它是Java Web开发的基础,需要的页面都是用JSP来建立的,它是一种