- 浏览: 342798 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
alafqq:
很好的一篇启蒙hashmap的文章;HASHTABLE的93行 ...
使用数组和链表实现hash表存储信息 -
小帅1127:
我擦,我还以为有什么大坑呢,这也写出来。。。
if..else if和if..if的区别 -
fncj:
转下http://www.dodoer.com
hadoop单机版搭建图文详解 -
yueshang520:
Spring注解原理的详细剖析与实现 -
fncj:
转下,谢谢http://www.whohelpme.com/b ...
Spring注解原理的详细剖析与实现
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。代码先行
//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的参数值
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)一般用于重定向到错误处理界面或者登陆界面。客户端地址栏发生变化,这次任务由客户端完成。
发表评论
-
使用CGLIB实现AOP功能与AOP概念解释 .
2011-08-19 10:30 1424第三方创建代理对象的框架cglib,目标类可以不实现接口 ... -
编码实现用JDK中的Proxy实现springAOP功能
2011-08-18 15:04 792http://blog.csdn.net/iamtheevil ... -
Spring注解原理的详细剖析与实现
2011-08-14 23:09 84350本文主要分为三部分: ... -
Spring装配基本属性的原理分析与代码实现
2011-08-11 15:37 1481首先,做一个配置属性的基本测试。修改beans.xml,使引用 ... -
编码剖析Spring依赖注入的原理
2011-08-10 20:01 1868一、注入依赖对象 基本类型对象注入: <b ... -
Spring的三种实例化Bean的方法
2011-08-10 14:03 1Spring的三种实例化Bean的方法 1、 使用 ... -
Spring管理bean的原理自定义实现
2011-08-10 10:44 62441、Spring通过BeanDefinition管理基于S ... -
spring环境搭建与测试
2011-08-10 08:40 3473Chapter1、搭建与测试spring的环境 1、 ... -
log4j的使用与详细分析
2011-08-05 13:32 2692一、什么是log4j? http://logging.a ... -
log4j使用详解
2011-08-04 23:05 2http://logging.apache.org/log4j ... -
spring入门及Demo
2011-07-29 16:01 0一、Spring是什么? Spring是一个开源框架,它 ... -
ibatis入门及环境搭建
2011-07-23 12:27 1470使用ibatis的理由: 1. 知道怎样操作10种以上 ... -
div内页面背景图片无法显示解决方法
2011-03-14 21:12 1387用photoshop打开背景图片,在“图像”菜单下将“模式 ... -
web开发之感悟篇
2011-02-27 19:10 1611学而不思则罔,思而不学则殆。 出处:《论语·为政 ... -
CSS学习笔记(1)
2011-02-19 23:35 1258一、CSS基本语法 1、 所有css样式申明都是大小写无关 ... -
web学习记录(一些问题的解决方案)
2011-02-16 11:51 12691、eclipse中the import javax.serv ... -
JSP工作原理浅析
2011-01-19 02:04 1405jsp第一次被请求时,jsp引擎把该jsp文件转换成 ... -
servlet学习笔记
2011-01-19 01:13 10211、servlet和jsp有什么区别? ... -
session机制深入理解
2011-01-18 02:18 29151、什么是session? ... -
jsp与servlet传递产生乱码的根源及解决方案
2011-01-13 03:31 3029一、基本概念 1、Jsp页面指令也叫做page指令。Pag ...
相关推荐
### JavaWeb-Servlet学习与总结 #### 一、Servlet简介 Servlet是一种运行在服务器端的小程序,主要用于处理客户端发送的HTTP请求并返回响应结果。它作为Java Web开发的基础技术之一,广泛应用于各种Web应用程序中...
Java Servlet是Java Web开发中的核心组件之一,它用于构建动态网站和Web应用程序。...学习笔记中可能包含了从基础概念到实践操作的全过程,通过不断复习和实践,可以逐步提升对Servlet的理解和运用能力。
Servlet是Java Web开发中的核心组件,它用于接收和处理客户端的HTTP请求,并返回响应结果。...通过学习和实践"Servlet入门小例子",我们可以更好地理解和掌握Servlet的工作机制,为后续的Web开发打下坚实基础。
本教程将引导初学者进入Servlet的世界,通过一个简单的入门例子来理解其基本概念和工作流程。 1. **Servlet简介** Servlet是Java API的一部分,允许开发者创建动态Web应用。它是一个Java类,继承自`javax.servlet....
10. **学习总结** 学习 JSP 和 Servlet 要注重理论与实践相结合,不仅要理解它们的工作原理,还要通过编写实际项目来提升技能。同时,不断关注新技术,如 Spring Boot 和微服务架构,这将有助于你更好地适应 Java ...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP &Servlet;时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
在短短的5分钟内,我们将快速掌握Servlet的基础知识,以便您能够迅速入门。 首先,Servlet是一个Java类,它扩展了服务器的功能,使得服务器能够处理HTTP请求并生成响应。Java Servlet API提供了多种接口和类,其中`...
通过以上知识点的总结,我们可以看到方立勋servlet学习笔记涵盖了Servlet的基础概念、配置与部署、资源管理以及数据流处理等方面的内容。这些知识点对于初学者来说非常有价值,能够帮助他们更好地理解Servlet的工作...
在"魔乐学习servlet"这个资源中,我们将会深入理解Servlet的基础知识,包括它的概念、工作原理以及如何在实际项目中应用。 Servlet是在Java EE(企业版)环境中运行的服务器端程序,主要用于处理客户端(如浏览器)...
Servlet是Java平台上的一个核心技术,用于开发动态Web应用程序。...通过以上步骤,读者可以顺利完成Servlet的入门配置,为后续的Web开发打下基础。在实践中不断探索和学习,才能更好地掌握Servlet和相关的JavaWeb技术。
总结,Servlet是Java Web开发的基础,它通过Servlet API与服务器进行交互,处理请求并返回响应。理解和熟练使用Servlet,可以构建出高效、动态的Web应用程序。J2EE 1.5和Java EE API的中英文对照版文档是学习Servlet...
### 超详细的Servlet学习笔记 #### 一、Servlet简介 **Servlet** 是Java平台上的一个重要的技术标准,主要用于扩展Web服务器的功能。它允许开发者创建能够处理动态内容的应用程序组件,这些组件通常被称为...
AJAX+servlet实例入门 AJAX+servlet实例入门是指通过结合AJAX技术和Servlet实现的Web应用程序。AJAX(Asynchronous JavaScript and XML)是一种技术,它可以使Web应用程序具备异步交互的能力,从而提高用户体验。...
### Servlet学习笔记2 在Java Web开发中,Servlet是一种重要的技术,它负责处理客户端的请求并生成响应。本文档将围绕“Servlet学习笔记2”这一主题进行深入探讨,旨在为读者提供一个清晰的学习路径和实践指导。 #...
总结,Servlet是Java Web开发中的关键组件,理解其基础和工作原理对于构建高效、可扩展的Web应用程序至关重要。通过学习和实践,开发者可以熟练地利用Servlet来处理各种Web请求,实现复杂的业务逻辑。
### jspServlet基础入门手册知识点总结 #### 一、HTTP状态码详解 在开始学习servlet之前,了解HTTP状态码的基础知识是十分重要的。HTTP状态码由三位数字组成,用于指示客户端请求的状态信息。通常分为五大类:1xx...
【Servlet 概述】 Servlet 是 JavaEE(Java Platform, Enterprise Edition)中的核心组件,主要用于处理 Web 应用中的服务器端任务。...对于初学者来说,理解这些基础概念和技术是学习 JavaWeb 开发的第一步。
总结来说,无论是对于希望找到高薪工作、掌握Java Web开发技能的初学者,还是对于想要进一步深化自己Java技术栈的专业人士来说,了解并掌握servlet和JSP都是十分重要的。而对于想要在互联网上学习Java的爱好者,参加...