`
geli_hero
  • 浏览: 16809 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java Servlet/JSP的学习

阅读更多
JavaBean学习
1. 不带参数的构造方法
2. getXXX、setXXX
3. 是为了能使用反射机制


JSP访问JavaBean
1. 导入JavaBean类 <%@ page import……
2. 声明JavaBean对象 <jsp:useBean id=…  class=…  scope=…
3. 访问JavaBean属性 <jsp:getProperty name=…  property=…

接口Servlet
抽象类GenericServlet
抽象类HttpServlet

每一个Servlet都必须要实现Servlet接口,GenericServlet是个通用的、不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承了GenericServlet,所以开发时候仅需要继承HttpServlet即可。
Servlet接口中定义了一个service方法,HttpServlet实现了该方法,不需要重写。




我们在开发中仅需要重写doXXX方法即可,如重写doPost方法

attribute在tomcat中的实际意义:其实就是个HashMap




1.对于Tomcat来说,它会将客户传递过来的参数放在一个Hashtable中,其定义为:
private Hashtable<String, String[]> paramHashStringArray = new Hashtable<String, String[]>();
这是个String->String[]的键值映射。
2.某些Servlet在web.xml文件中只有<servlet>元素而没有<servlet-mapping>元素,那么无法通过url地址的方式访问这个servlet了,那么会在<servlet>元素中配置一个<load-on-startup>子元素,让容器在启动的时候自动加载该Servlet,并且调用其init方法完成一些全局性的初始化工作。





ServletContext就是jsp内置对象application。





在编写代码时需要非常细致地考虑多线程的同步问题。


Servlet过滤器(filter):
需要在web.xml中进行配置(Filters are configured in the deployment descriptor of a web application.)
Servlet过滤器能够对容器的请求和响应对象进行检查和修改;其本身并不生成请求和响应对象,只提供过滤作用;过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;同理,检查Response对象,并修改内容等;Servlet过滤器负责过滤的web组件可以使Servlet、JSP和HTML文件。

Servlet过滤器的过滤过程:




Filter接口:
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:
init()  doFilter()  destroy()

Examples that have been identified for this design are:
1. Authentication Filters
2. Logging and Auditing Filters
3. Image conversion Filters
4. Data compression Filters
5. Encryption Filters
6. Tokenizing Filters
7. Filters that trigger resource access events
8. XSL/T filters
9. Mime-type chain Filter





request对象及response对象都是由容器生成的。

过滤器是个链式请求处理过程(FilterChain)


过滤器的配置文件均在servlet的前面:




Filter会在容器启动的时候就进行初始化,此时调用init方法。如果有一个filter启动时失败了,那么整个web应用都没法正常启动。而Servlet是在用户访问的时候才进行初始化,并且一个Servlet启动失败不会影响其他的Servlet的应用,这点与Filter是非常不一样的。

所以必须保证Filter代码的完全正确性!
使用Servlet过滤器,通常在web.xml中配置很难做到精细化处理,如想有些jsp或servlet不应该被排查过滤,而有些需要的话,则应该在Filter的doFilter方法中进行判断处理,如判断用户时候正常登陆的话,可以判断该用户的session是否存在,如session.getAttribute(“…”)为null的话表明用户没有正常登陆,则可以在过滤器中进行重定向(sendRedirect)处理到登陆界面,而不是执行下一个过滤器。

Filter简化了Servlet/JSP的开发过程,将一些既需要在jsp中判断又需要在servlet中判断的过程仅需要放在Filter中写好即可。Filter的作用性仅次于Servlet/JSP。

一个Filter的小实验:
当用户提交的用户名含有zhang这些字符则替换为li;
当用户提交的评论中含有gongchandang,则替换为***;

首先写comment.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<body>

	<form action="CommentServlet" method="post">
		<br> username:<input type="text" name="username"><br>
		comments:<textarea name="comment" rows="10" cols="7">  </textarea><br> 
		<input type="submit" value="submit">
	</form>
</body>
</html>


然后写CommentServlet
public class CommentServlet extends HttpServlet {
	private static final long serialVersionUID = 8152348267462962556L;
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
//		String username = (String) req.getAttribute("username");
//		String comment = (String) req.getAttribute("comment");
		
		req.getRequestDispatcher("commentResult.jsp").forward(req, resp);
	}
}


接着写CommentFilter
public class CommentFilter implements Filter {

	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		
		String username = req.getParameter("username");
		String comment = req.getParameter("comment");
		
		username = username.replace("zhang", "li");
		comment = comment.replace("gongchandang", "****");
		
		req.setAttribute("username", username);
		req.setAttribute("comment", comment);
		
		chain.doFilter(request, response);
		//chain.doFilter(req, resp);
		
	}

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}


然后配置web.xml
<filter>
		<filter-name>CommentFilter</filter-name>
		<filter-class>com.taobao.filter.CommentFilter</filter-class>
	</filter>

	<!-- 这里仅过滤CommentServlet这个Servlet -->
	<filter-mapping>
		<filter-name>CommentFilter</filter-name>
		<url-pattern>/CommentServlet</url-pattern>
	</filter-mapping>


最后写CommentResult.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<body>
	username:<%=request.getAttribute("username")%><br> 
	comment:<%=request.getAttribute("comment")%><br>
</body>
</html>



(申明下:代码中貌似用了taobao字样,那是纯粹本人搞玩而已,自身实力太烂,不敢玷污TB。还要感谢相关的Servlet学习视频,有些截图来自于那里!)

  • 大小: 8.6 KB
  • 大小: 3.2 KB
  • 大小: 353.7 KB
  • 大小: 339.9 KB
  • 大小: 152.2 KB
  • 大小: 437.7 KB
  • 大小: 37.9 KB
分享到:
评论

相关推荐

    servlet/jsp深入详解源代码

    在IT行业中,Servlet和JSP(JavaServer Pages)是用于构建动态Web应用程序的关键技术,尤其在企业级应用开发中占据重要地位。孙鑫是一位知名的Java技术专家,他的作品常常深入浅出地解析复杂的编程概念。这个名为...

    servlet/jsp深入详解 基于tomcat的web开发

    Servlet和JSP是Java EE(企业版)平台中用于构建动态网页的关键技术,而Tomcat则是一个广泛使用的开源Java Servlet容器。 **Servlet基础** Servlet是一个Java类,它扩展了服务器的功能,用于处理HTTP请求并生成响应...

    servlet/JSP + mysql BBS项目

    Servlet和JSP是Java Web开发中的核心技术,用于构建动态网站和Web应用程序。Servlet是Java EE规范的一部分,它提供了一种服务器端处理HTTP请求的方法。Servlet是一个Java类,它扩展了服务器的功能,可以接收、处理并...

    java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport 问题-附件资源

    java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport 问题-附件资源

    servlet /jsp

    通过分析这个项目中的源码,我们可以学习如何在实际场景中运用Servlet和JSP,以及如何组织和设计一个完整的Web应用。例如,我们可以研究如何在Servlet中处理数据库交互,如何在JSP中实现动态数据显示,以及如何使用...

    课程设计项目 Java/Jsp/Servlet/SSM/SSH/SpringBoot源码分享下载

    Java/Jsp/Servlet/SSM/SSH/SpringBoot是Java Web开发中常用的技术栈,本课程设计项目集合了这些技术的源码,旨在帮助学习者深入理解和应用它们。以下是关于这些技术栈及其在项目开发中的应用的详细说明: 1. **Java...

    基于servlet/jsp的学生信息录入查询系统

    通过学习和实践这个项目,初学者可以深入理解Servlet、JSP、DBUtils以及Web开发的基本流程,为后续的Web开发技能打下坚实基础。同时,它也涉及到了数据的表示、用户的交互和数据库的管理,这些都是构建任何Web应用...

    servlet/jsp 入门教程

    通过本教程,初学者可以系统地了解和掌握Servlet和JSP的基本概念、开发流程和关键技巧,为进一步学习Java Web应用开发打下坚实的基础。同时,乐言网提供了真人视频一对一的教学服务,辅助学习者更有效地掌握这些知识...

    Servlet/jsp网上书城

    Servlet/jsp网上书城是一个基于Java Web开发的项目,它运用了Servlet和JSP(JavaServer Pages)技术来构建一个基本的在线购物平台,用于展示、购买书籍并管理订单。这个项目的核心目标是提供一个用户友好的界面,让...

    JavaServlet_JSP.zip_Java Servlet JSP_Jsp/Servlet

    这个压缩包“JavaServlet_JSP.zip”显然包含了关于这两者的学习资料,特别是“0596005725.chm”文件,可能是一个详细的技术手册或者教程。 Java Servlet是一种Java API,允许开发人员编写服务器端代码来处理HTTP...

    Servlet/jsp编写的网上书城

    总结,"Servlet/jsp编写的网上书城"项目涉及了Web开发的多个方面,包括用户认证、数据库操作、业务逻辑处理、前端展示等,是学习和实践Servlet和JSP技术的一个良好实例。通过这样的项目,开发者可以深入理解Java Web...

    servlet/jsp(jtds)实例

    Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,用于构建动态Web应用程序。它们在Web服务器上运行,提供与客户端(通常是浏览器)交互的能力。JDBC(Java Database Connectivity)则是Java中用来连接...

    servlet/jsp--API

    Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,它们构成了Web应用程序的基础。在Java API中,Servlet和JSP API提供了处理HTTP请求、动态生成响应内容以及与数据库交互的能力。这篇详述将深入解析这...

    servlet/jsp聊天室

    该功能可以对所有人发言,也可以单独对某一个人发言。运用到的技术servlet/jsp.

    Servlet JSP深入详解 基于Tomcat的Web开发

    通过本文对Servlet和JSP技术的深入讲解,我们可以看到这两种技术在Java Web开发中的重要地位。Servlet负责处理业务逻辑,而JSP则专注于展示数据。结合使用Tomcat作为部署平台,开发者可以构建出功能强大且易于维护的...

    JSP与Servlet核心技_.rar_CSAJSP chapter 16_Servlet/JSP_jsp+servlet_se

    **JSP(Java Server Pages)与Servlet是Java Web开发中的两个关键组件,它们共同构建了动态Web应用程序的基础。** **JSP技术:** JSP是一种服务器端的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容...

    servlet和jsp学习指南

    《Servlet和JSP学习指南》是系统学习Servlet和JSP的必读之作。由全球知名的Java技术专家(《HowTomcat Works》作者)亲自执笔,不仅全面解读Servlet和JSP的最新技术,重点阐述JavaWeb开发的重要编程概念和设计模型,...

    jsp-servlet-javaBean.zip_Servlet/JSP_javabean_javabean servlet_j

    在"jsp+servlet+javaBean实现MVC"的项目中,开发者会学习到如何创建和配置Servlet,如何编写JSP页面,以及如何定义和使用JavaBean。具体步骤可能包括: 1. 创建Servlet类,实现doGet或doPost方法来处理请求。 2. 在...

    servlet和jsp学习指南_pdf.rar

    《servlet和jsp学习指南》是系统学习servlet和jsp的必读之作。由全球知名的java技术专家(《how tomcat works》作者)亲自执笔,不仅全面解读servlet 和jsp 的最新技术,重点阐述java web开发的重要编程概念和设计...

    Servlet和Jsp学习指南(带详细书签)

    《servlet和jsp学习指南》是系统学习servlet和jsp的必读之作。由全球知名的java技术专家(《how tomcat works》作者)亲自执笔,不仅全面解读servlet 和jsp 的最新技术,重点阐述java web开发的重要编程概念和设计...

Global site tag (gtag.js) - Google Analytics