`
freewxy
  • 浏览: 336941 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

servlet学习入门总结

    博客分类:
  • J2EE
阅读更多

1、 jsp和servlet:

   从完成功能上来说,java servlet和jsp没有什么本质区别,jsp能做的事情servlet也能搞定,同样,servlet能搞定的事情jsp也能搞定,就像360和qq都能窥探个人隐私一样。但二者又有很大区别:

   servlet是纯java代码,所以在编写网页方面很不方便,而jsp恰好相反。但是,jsp运行时需要转换成java代码,然后编译、加载运行。因此,各有利弊,结合使用。

   jsp是在http或者xml文档中嵌入java脚本或者jsp标签形成的,是文本文件,而servlet是纯java文件,所有使用servlet完成的功能,包括与用户进行交互,都是通过java代码完成的。

   servlet是运行在服务器端的小应用程序,相当于客户端的applet吧。可以接受web客户端的请求。

 

2、servlet的生命周期:

    1)加载  

             服务器启动或第一次访问时,web容器加载servlet

    2)初始化

             servlet加载后,进行实例化,然后调用init方法进行初始化

    3)服务

            客户端发送请求时,服务器创建两个对象,分别是HttpServletRequest 和 HttpServletResponse  的对象。前者包含请求信息,后者包含相应信息。然后调用service方法进行具体处理。 

    4)删除 

            服务器关闭或不再需要时,系统调用destroy方法释放资源。

 

   Servlet类-->

   实例化加载-->

   初始化init(ServletConfig)-->

   就绪Service_request_response-->     // <----客户请求

   destory()销毁-->

   垃圾回收finalize()    

 

   servlet通常运行在多线程服务器上,所以能够支持并发请求,在处理的时候需要处理资源的共享。---?

 

3、制作一个完整的servlet。代码先行

 写道
package servlet.demo;
//1、引入要用到的包
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jdbc.pojo.account;

//2、定义基本的框架并继承HttpServlet
public class loginServlet extends HttpServlet {
//3、编写成员方法,成员方法有init,service,destroy等,一般只需要搞定service
    public void service(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        //设置MIME的类型,设置相应格式编码使输出中文不乱码
          response.setContentType("text/html;charset=gbk");
       //得到输出流,使用out对象影响用户
          PrintWriter out = response.getWriter();

   out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
   out.println("<HTML>");
   out.println(" <HEAD><TITLE>loginServlet --wxy</TITLE></HEAD>");
   out.println(" <BODY>");

  //**************获得客户端浏览器信息*******************
    //得到放有请求数据的一个遍历对象 java.util.Enumeration<String>em=request.getHeaderNames();
   //取得客户端的地址
// String clientAdd=request.getRemoteAddr();
// out.println(clientAdd+" 客户端请求头数据如下:");
// out.println("<hr>");
// out.println("<table border=\"1\" width=\"200px\">");
// //遍历输出为一个table
// while(em.hasMoreElements()){
// String headName=em.nextElement();
// String headValue=request.getHeader(headName);
// out.println("<tr><td>"+headName+"</td>");
// out.println(" <td>"+headValue+"</td></tr>");
// }
   //***************************************************
   //取得客户端名字action的参数值
   //通过request对象获取请求信息
   //getParameter获取单值表单元素的值,getParameter获得多值表单元素值
     String action =request.getParameter("action");
      System.out.println("action的参数值是: "+action);
      out.println("action 的参数值是:"+action);
//****************************************************************
    //登陆请求
    if(action.equals("login")){
    //得到form中的参数
String account_id=request.getParameter("account_id");
String pwd=request.getParameter("password");
//查询数据库中是否存在该用户
List<account> Login_account=new jdbc.dao.accountDao().query_login_info(account_id, pwd);

//如果存在该用户,则返回的队列长度不为0
int flag=Login_account.size();
if(flag!=0){//查到数据库中存在登陆的用户信息
//创建用户类对象
account acc=new account();
int a_id=Integer.parseInt(account_id);
acc.setAccount_id(a_id);
acc.setPwd(pwd);
// int id=new jdbc.dao.accountDao().queryID();
// List<jdbc.pojo.persInfo> perI=new jdbc.dao.perInfoDao().queryPerInfo(id);
//获取session对象
HttpSession session = request.getSession(true);
//在session中存储信息;将用户的信息设置为session对象的属性
session.setAttribute("account", acc);
//使用request对象设置属性
//request.setAttribute("re_account", acc);
//得到Servlet上下文环境对象
//ServletContext sc = this.getServletContext();
//设置属性
//sc.setAttribute("sc_account", acc);
request.getRequestDispatcher("main.jsp").include(request, response);
}else{
//转发:由error.html执行完,当前的Servlet将执行后的结果响应到浏览器端。
request.getRequestDispatcher("error.html").forward(request, response);
//重定向,相当于重新发送一次新的请求。一般用于重定向到错误处理界面或者登陆界面
//response.sendRedirect("error.html");
}
   }
    //注册请求
   else if(action.equals("enroll")){
         out.println("正在建设中。。。。。。");
     }
    else {
          out.println("action值未知:"+action);
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}

 

   完整过程:

        1) 编写Servlet  如上代码,使用myeclipse或者eclipse都可以轻松搞定;

        2)编译Servlet   这一步开发工具代劳了。

        3)配置Servlet   在web.xml中配置

            *1、首先是servlet的申明    

            <servlet>

     <description>This is the description of my J2EE component</description>

     <display-name>This is the display name of my J2EE component</display-name>

     <servlet-name>loginServlet</servlet-name>

     <servlet-class>servlet.demo.loginServlet</servlet-class>

       </servlet>

            *2、然后是servlet映射,主要配置访问该servlet的方式

    <servlet-mapping>

     <servlet-name>loginServlet</servlet-name>

     <url-pattern>/loginServlet</url-pattern>

       </servlet-mapping>

                 注意:<url-pattern>后紧跟的“/”不能丢掉,否则访问不到资源!!

         4)部署servlet 好吧,这一步开发工具也代劳了,不过你也可以自己手动部署.

         5)请求servlet  启动服务器,去浏览器发送请求吧

    尽管开发工具帮助我们完成了很多工作使我们的开发变得更加简单,但能够了解servlet的具体创建过程能让我们更好的     使用它。

 

4、servlet的请求转发

     request.getRequestDispatcher("main.jsp").include(request, response);

     request.getRequestDispatcher("error.html").forward(request, response);
     response.sendRedirect("error.html");

      1)include包含:将url中的内容(main.jsp)包含到当前的servlet输出当中,服务器端包办,客户端地址栏不跳转

         所有业务都在内部搞定

      2)forward转发:将当前的request和responde交给指定的URL(error.html)处理,在服务器端完成,客户端路            径还是没有改变 。业务外包,挂自己牌子。

      3)sendRequest重定向:指示客户端重新发送一次新的请求。第二个请求指向其参数(error.html)一般用于重定向到错误处理界面或者登陆界面。客户端地址栏发生变化,这次任务由客户端完成。

分享到:
评论

相关推荐

    JSP_Servlet学习笔记(第2版)

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP &Servlet;时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...

    servlet 学习基础资料 ppt

    servlet ppt 学习资料,简单,易懂,综合总结性强,比较的全面。

    java-servlet学习笔记

    看过方立勋老师的课程之后 做的一点小笔记 以后拿出来复习复习 不对之处 请见谅 本人只是默默的一只菜鸟

    jsp/servlet个人学习笔记

    el表达式语言,jsp标签库,servlet,过滤器,监听器,基础语法,内置对象,站点配置,常见错误,学习总结

    Servlet2.doc

    Servlet技术的基础详细学习笔记,总结了Servlet技术的各个知识点,可以用来复习以及对基础知识的巩固,对新人的学习很有帮助。

    JAVAEE基础学习总结

    WED工作原理、HTTP协议、Servlet、GET和POST提交方式的优缺点、MVC设计、连接池、JNDI、自定义异常、Log4j、EL 和 JSTL、Wed service

    JavaWeb基础总结

    是自己学习过程的总结,今天拿出来和大家分享!包含jSP servlet MVC

    JAVA基础学习总结笔记

    看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。

    JAVA&JEE知识点汇总—真正自己的学习总结

    包括了Java基础知识、面向对象、IO流、线程、网络编程、JEE、servlet、JSP、Javascript、框架理解、ORM对象关系型数据库映射、hibernate、spring、事务、EJB、UML等技术的基本理解和总结,文档共66页!

    Java语言基础下载

    第三十章:struts入门 623 学习目标 623 Struts简介 624 什么是应用框架 624 WEB框架所要解决的问题 625 建立简单的Struts应用 627 内容总结 636 独立实践 636 第三十一章:Struts基础 637 学习目标 637 MVC 638 ...

    java从入门到精通70个PPT

    javaPPT 从入门到精通 从基础到框架 70个PPT 1.初识java 2.变量、数据类型和运算符和表达式 3运算符和程序流程结构 4.数组 5.类和对象 6.字符串 7.封装,继承,多肽 8.接口与抽象类 9.java集合类 10.jdbc 11 html...

    教学在线留言答疑系统,JavaWeb基础,servlet jsp filter,原生jdbc.zip

    模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者...

    JavaWeb每日总结思维导图

    内容包括:MySQL、MySQL约束&多表、MySQL多表&事务、JDBC、数据库连接池、HTML、CSS、JS基础&高级、BootStrap、XML、Tomcat、Servlet&HTTP&Request、Response、Cookie&Session、JSP&EL&JSTL、Filter&Listener、...

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    本书内容非常全面,涵盖了多册J2EE书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的废话、例子,以增加书本厚度,使得阅读者...

    简陋的JavaWeb学生公寓管理系统 Servlet+JSP+MySql+Layui.zip

    模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者...

    设备维修管理系统,JavaWeb 项目,使用原生servlet 和 JDBC。.zip

    模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者...

    小小商城系统,JavaWEB项目,基于原生Servlet,仿天猫页面,功能齐全.zip

    模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者...

    JSP-Servlet-CartDemo:Javaweb基础案例之JSP+Servlet实现在线课程网站购物车功能

    Javaweb基础案例之JSP+Servlet实现在线课程网站购物车 技术点介绍 精华总结 巩固jsp、Servlet、Filter等技术点 学习如何设计并实现本地JVM缓存 在线学习网站购物车功能 1、课程列表显示 2、加入购物车、加入收藏 3、...

    毕设&课设&项目&实训-基于WEB的考研资源共享系统,Jsp+Servlet+Bootstrap开发.zip

    学习与项目开发:可以用作毕设、课设、作业和竞赛项目的开发基础,可以使用这些源码作为项目开发的基础,快速构建出具有竞争力的作品。 【互动与交流】: 资料鼓励下载和使用这些资源,并欢迎学习者进行沟通交流、...

    JDBC-ODBC桥接器访问Access数据库.pdf

    我看了《Servlet和JSP核心编程》之后做的学习总结。对网页通过servlet访问数据库算是个入门教程吧

Global site tag (gtag.js) - Google Analytics