1.servlet工作模式:
- 客户端发送请求至服务器
- 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
- 服务器将响应返回客户端
2. 在html 界面中,要是没有设定提交的方法,默认以doGet的方法进行处理。servlet有两种处理客户请求的方法,分别是doGet和doPost:
(1). 如果客户以get方法请求,请求的参数会以名值对的形式显示在浏览器的地址栏,请求发送的数据,不能大于1024K,在服务器端的servlet中,必须以doGet方法接收
(2).如果是客户以post方法请求,请求的参数不会显示在地址栏,请求的发送的数据可以是无限大,例如上传文件时,肯定是post方法,在服务器端的servlet中,就必须以doPost方法接收。
3.init()方法可用于初始化加载service服务。
servlet里的init代码:
/** * 初始化servlet注入service */ public void init(ServletConfig servletConfig) throws ServletException { //把webApplicationContext的service服务向servlet传递 ServletContext servletContext = servletConfig.getServletContext(); //ServletContext为servlet-api.jar包 WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);//WebApplicationContext为spring组件 providerFacade = (ProviderFacade)ctx.getBean("providerFacade");//根据id加载providerFacade服务 packageProductLineFacade = (PackageProductLineFacade)ctx.getBean("packageProductLineFacade"); }
spring配置文件:
<bean id="providerFacade" parent="baseTransactionProxy" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> <property name="target"> <bean class="com.mangocity.api.facade.impl.ProviderFacadeImpl" parent="facade" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> <property name="providerDAO"> <ref bean="providerDAO"/> </property> </bean> </property> </bean>
4.servlet根据参数分派给不同的方法处理--相当于struts分派不同的action
例如两请求如下:1. var QUERYURL="providerProductServlet?method=query&providerCD="+providerCD+"&data="+data;
2.var QUERYURL="providerProductServlet?method=delete&providerCD="+providerCD+"&data="+data;
则在servlet中处理可如下:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); request.getParameter("name"); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); if(request.getParameter("method").equals("query"))//再分别编写pagingQueryProduct以及deleteProduct方法 { pagingQueryProduct(request, response); } if(request.getParameter("method").equals("delete")) { deleteProduct(request, response); } }
/** * 删除单个产品 * @param request * @param response */ private void deleteProduct(HttpServletRequest request, HttpServletResponse response) { long lineId = Long.valueOf(request.getParameter("lineId")); PackageProductLine productLine = (PackageProductLine) packageProductLineFacade.find(lineId); productLine.setStatus("N"); packageProductLineFacade.saveProductlineInfo(productLine); try { pagingQueryProduct(request, response); } catch (IOException e) { e.printStackTrace(); } System.out.println("删除id为:" + productLine.getId()); } /** * 分页查询产品 * @param request * @param response */ private void pagingQueryProduct(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getWriter(); int pageNum = 1; int pageSize = 10; String data = request.getParameter("data"); String providercd = (String) request.getSession().getAttribute("providerCD"); if(providercd == null || "".equals(providercd)) { providercd = request.getParameter("providerCD"); request.getSession().setAttribute("providerCD", providercd); } Map map = (HashMap) JSONObject.toBean(JSONObject.fromObject(data),HashMap.class); if(providercd != null && !"".equals(providercd)) { if(map != null && !"".equals(map)) { pageNum = Integer.valueOf(map.get("pageNum").toString()); pageSize = Integer.valueOf(map.get("pageSize").toString()); } } if (map != null && map.size() > 0) { if (map.containsKey("id")) { String id = (String)map.get("id"); if (null != id && !id.equals("")) { if(!isNumeric(id)) { map.put("id", "0"); } } } if (map.containsKey("name")) { String name = (String)map.get("name"); if (name != null && "产品名称".equals(name.trim())) //if (name != null && "产品名称".equals(new String(name.trim().getBytes("ISO8859-1"), "GBK"))) { map.put("name", null); } } } PageModel model = packageProductLineFacade.pagingQueryProduct(providercd, map, pageNum, pageSize); JsonConfig config = new JsonConfig(); config.setExcludes(new String[]{"pageModel", "hibernateLazyInitializer","handler","tProvince"}); String page = JSONObject.fromObject(model,config).toString(); String jsonpCallback = request.getParameter("jsonpCallback"); out.println(jsonpCallback+"("+page.toString()+")"); /*out.flush();*/ out.close(); }
注:// 解决延迟加载产生异常的问题
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"pageModel", "hibernateLazyInitializer","handler","tProvince"});
String page = JSONObject.fromObject(model,config).toString();
5.web.xml映射
<servlet> <servlet-name>providerProductServlet</servlet-name> <servlet-class>*.*.*.*.ProviderProductServlet</servlet-class> </servlet> <servlet-name>providerProductServlet</servlet-name> <url-pattern>/providerProductServlet</url-pattern> </servlet-mapping>
相关推荐
1. **Servlet与JSP**:Java Web的基础,Servlet是服务器端的Java应用程序,用于处理HTTP请求;JSP(JavaServer Pages)则提供了在HTML页面中嵌入Java代码的能力,简化了视图层的开发。 2. **MVC模式**:Model-View-...
四、Servlet实战 在"day02"这个目录中,很可能包含了多个Servlet实例和相关的配置文件。你可以通过以下步骤进行实践: 1. 创建Servlet:创建一个新的Java类,继承`HttpServlet`,重写`doGet()`和`doPost()`方法。 2....
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指...
【北大青鸟河北天泰JSP/Servlet第四章项目新闻发布系统——主题管理及首页新闻展示】是针对Java Web开发的一项教学内容,旨在帮助学习者深入理解并熟练运用JSP(JavaServer Pages)和Servlet技术来构建一个实际的...
四、Servlet实战 在实际开发中,我们通常创建一个Servlet类,实现`doGet()`或`doPost()`方法,然后在web.xml中进行映射。例如,创建一个简单的Hello World Servlet: ```java import javax.servlet....
《深入理解Java Web开发:JSP、Bean与Servlet实战》 在Java企业级应用开发中,JSP(JavaServer Pages)、Bean和Servlet是构建Web应用程序的三大核心技术。本压缩包"JSP-Bean-Servlet.zip"包含了一个实际的Java Web...
【Servlet+JDBC+JSP项目实战源代码】是一个典型的Web开发教程,涵盖了Web应用程序的基础构建块,包括Servlet、JDBC(Java Database Connectivity)和JSP(JavaServer Pages)。这个项目实战提供了完整的源代码,旨在...
根据提供的信息,我们可以了解到这是一套由韩顺平老师教授的J2EE视频实战教程,主要聚焦于Servlet技术。接下来,我们将对这一课程的主要知识点进行详细的解析与介绍。 ### J2EE简介 J2EE(Java 2 Platform, ...
通过这些实例,初学者可以了解并掌握JSP的基本语法、动态网页的创建、以及与Servlet的协同工作原理。 首先,JSP是Java平台上用于构建动态Web应用的一种技术。它允许开发者将HTML或者XML文档与Java代码相结合,以...
资源名称:j2ee视频servlet视频教程资源目录:【】j2ee视频servlet第0讲开山【】j2ee视频实战教程servlet第1讲初识【】j2ee视频实战教程servlet第2讲(上集)【】j2ee视频实战教程servlet第2讲(下集)【】j2ee视频实战...
韩顺平j2ee视频实战教程servlet.课件(精选整理
本教程聚焦于Servlet的实际应用,以《JavaWeb开发实战宝典》第四章内容为基础,通过一系列源码示例和习题,深入解析Servlet的核心概念和用法。 首先,我们来看一下Servlet的生命周期,它包括加载、实例化、初始化、...
本教程将深入讲解Servlet的测试与实战应用,以"pro_jsp2"项目为例,探讨如何在实际开发环境中进行有效的测试和实践。 首先,Servlet的基本结构包括了`init()`、`service()`、`destroy()`等方法。`init()`在Servlet...
本实战项目“综合实战-servlet”旨在强化对Servlet的理解和应用,通过实现用户登录注册以及一系列的增删改查功能,帮助开发者深入掌握Servlet在实际开发中的运用。 首先,我们来探讨Servlet的基础知识。Servlet是...
Java编程项目实战:jsp+servlet+javaBean实现MVC; Java编程项目实战:jsp+servlet+javaBean实现MVC; Java编程项目实战:jsp+servlet+javaBean实现MVC; Java编程项目实战:jsp+servlet+javaBean实现MVC; Java编程项目...
四、Servlet实战 在提供的压缩包文件中,可能包含了一个简单的Servlet示例。通常,一个Servlet类会继承`javax.servlet.http.HttpServlet`,并重写doGet()或doPost()方法。例如: ```java import javax.servlet.*; ...
主要涉及的课程内容:jsp的底层原理,jsp与servlet的区别,jsp页面如何插入java代码,jsp中的3个指令、7个动作,9个内置对象的使用,EL表达式,JSTL标签,如何自定义标签,MVC模式,jsp+servlet实战案例
【标题】:“JDBC+Servlet+JSP整合开发之-JSP项目实战” 在这个主题中,我们将深入探讨如何使用Java的三大Web开发技术——JDBC(Java Database Connectivity)、Servlet和JSP(JavaServer Pages)来构建一个完整的...
编程项目实战Java-jsp:jsp+servlet+javaBean实现MVC; 编程项目实战Java-jsp:jsp+servlet+javaBean实现MVC; 编程项目实战Java-jsp:jsp+servlet+javaBean实现MVC; 编程项目实战Java-jsp:jsp+servlet+javaBean...
综上所述,韩顺平老师的这套J2EE视频实战教程涵盖了JSP、Servlet、数据库连接等多个方面的内容,非常适合希望深入学习Java Web开发的初学者和技术人员。通过这些系统的课程学习,学员不仅可以掌握理论知识,还能通过...