`

servlet实战

 
阅读更多

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>

 

 

 

 

 

分享到:
评论

相关推荐

    MLDN Java Web 开发实战经典源码李兴华源代码

    1. **Servlet与JSP**:Java Web的基础,Servlet是服务器端的Java应用程序,用于处理HTTP请求;JSP(JavaServer Pages)则提供了在HTML页面中嵌入Java代码的能力,简化了视图层的开发。 2. **MVC模式**:Model-View-...

    servlet 心的练习

    四、Servlet实战 在"day02"这个目录中,很可能包含了多个Servlet实例和相关的配置文件。你可以通过以下步骤进行实践: 1. 创建Servlet:创建一个新的Java类,继承`HttpServlet`,重写`doGet()`和`doPost()`方法。 2....

    JSP+Servlet实战视频课程

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指...

    北大青鸟河北天泰JSP/Servlet第四章项目新闻发布系统-主题管理及首页新闻展示

    【北大青鸟河北天泰JSP/Servlet第四章项目新闻发布系统——主题管理及首页新闻展示】是针对Java Web开发的一项教学内容,旨在帮助学习者深入理解并熟练运用JSP(JavaServer Pages)和Servlet技术来构建一个实际的...

    servlet

    四、Servlet实战 在实际开发中,我们通常创建一个Servlet类,实现`doGet()`或`doPost()`方法,然后在web.xml中进行映射。例如,创建一个简单的Hello World Servlet: ```java import javax.servlet....

    JSP-Bean-Servlet.zip_java web servlet_java+web+servlet_jdp bean

    《深入理解Java Web开发:JSP、Bean与Servlet实战》 在Java企业级应用开发中,JSP(JavaServer Pages)、Bean和Servlet是构建Web应用程序的三大核心技术。本压缩包"JSP-Bean-Servlet.zip"包含了一个实际的Java Web...

    Servlet+JDBC+JSP项目实战源代码

    【Servlet+JDBC+JSP项目实战源代码】是一个典型的Web开发教程,涵盖了Web应用程序的基础构建块,包括Servlet、JDBC(Java Database Connectivity)和JSP(JavaServer Pages)。这个项目实战提供了完整的源代码,旨在...

    韩顺平.j2ee视频实战教程servlet迅雷地址

    根据提供的信息,我们可以了解到这是一套由韩顺平老师教授的J2EE视频实战教程,主要聚焦于Servlet技术。接下来,我们将对这一课程的主要知识点进行详细的解析与介绍。 ### J2EE简介 J2EE(Java 2 Platform, ...

    李兴华的7个JSP实例代码

    通过这些实例,初学者可以了解并掌握JSP的基本语法、动态网页的创建、以及与Servlet的协同工作原理。 首先,JSP是Java平台上用于构建动态Web应用的一种技术。它允许开发者将HTML或者XML文档与Java代码相结合,以...

    j2ee视频servlet视频教程

    资源名称:j2ee视频servlet视频教程资源目录:【】j2ee视频servlet第0讲开山【】j2ee视频实战教程servlet第1讲初识【】j2ee视频实战教程servlet第2讲(上集)【】j2ee视频实战教程servlet第2讲(下集)【】j2ee视频实战...

    韩顺平j2ee视频实战教程servlet.课件(精选整理

    韩顺平j2ee视频实战教程servlet.课件(精选整理

    JavaWeb开发实战宝典-servlet篇

    本教程聚焦于Servlet的实际应用,以《JavaWeb开发实战宝典》第四章内容为基础,通过一系列源码示例和习题,深入解析Servlet的核心概念和用法。 首先,我们来看一下Servlet的生命周期,它包括加载、实例化、初始化、...

    servlet测试+实战代码

    本教程将深入讲解Servlet的测试与实战应用,以"pro_jsp2"项目为例,探讨如何在实际开发环境中进行有效的测试和实践。 首先,Servlet的基本结构包括了`init()`、`service()`、`destroy()`等方法。`init()`在Servlet...

    综合实战-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编程项目实战:jsp+servlet+javaBean实现MVC; Java编程项目...

    java serverlet 实例

    四、Servlet实战 在提供的压缩包文件中,可能包含了一个简单的Servlet示例。通常,一个Servlet类会继承`javax.servlet.http.HttpServlet`,并重写doGet()或doPost()方法。例如: ```java import javax.servlet.*; ...

    javawen之jsp从入门到项目实战(jsp+servlet)

    主要涉及的课程内容:jsp的底层原理,jsp与servlet的区别,jsp页面如何插入java代码,jsp中的3个指令、7个动作,9个内置对象的使用,EL表达式,JSTL标签,如何自定义标签,MVC模式,jsp+servlet实战案例

    [转载] JDBC+Servlet+JSP整合开发之-JSP项目实战

    【标题】:“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实现MVC; 编程项目实战Java-jsp:jsp+servlet+javaBean...

    韩顺平 j2ee视频实战教程》servlet + jsp的视频

    综上所述,韩顺平老师的这套J2EE视频实战教程涵盖了JSP、Servlet、数据库连接等多个方面的内容,非常适合希望深入学习Java Web开发的初学者和技术人员。通过这些系统的课程学习,学员不仅可以掌握理论知识,还能通过...

Global site tag (gtag.js) - Google Analytics