zoukankan      html  css  js  c++  java
  • servlet程序开发

    1 Servlet介绍

    服务端小程序,是使用Java语言编写的服务器端程序,可以向JSP一样,生成动态的WEB页面,Servlet主要运行在服务器端,并且服务器调用执行,是一种按照Servlet标准开发的类

    • 请求过程图

    image

    • 要想在程序中实现Servlet必须继承HttpServlet这个抽象类

    2 第一个servlet

    一个类要想做为Servlet必须要经过编译和配置

    
    public class Demo01 extends HttpServlet {
        // 重写父类的方法
    	public void doGet(HttpServletRequest req,HttpServletResponse response){
    		response.setCharacterEncoding("gbk");
    		PrintWriter printWriter = null;
    		try {
    			printWriter = response.getWriter();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		printWriter.write("我是一个servlet程序");
    	}
    	
    	
    }
    

    配置文件,需要在web.xml中配置servlet的映射路径

    <servlet>
      	<servlet-name>demo2</servlet-name>// servlet名称
      	<servlet-class>com.zhao.Demo01</servlet-class>// 编译后的类名
      </servlet>
      <servlet-mapping>
      	<servlet-name>demo2</servlet-name>
      	<url-pattern>/demo02</url-pattern>// 映射路径
      </servlet-mapping>
    

    3 Servlet和表单

    • 提交路径的问题
    • post get处理方式不同
    public class Demo01 extends HttpServlet {
    
    	public void doGet(HttpServletRequest req,HttpServletResponse response){
    		response.setCharacterEncoding("gbk");
    		PrintWriter printWriter = null;
    		try {
    			printWriter = response.getWriter();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		printWriter.write("姓名是:");
    		String username = req.getParameter("userName");
    		printWriter.write(username);
    	}
    }
    
    web.xml配置映射路径
    
    <servlet>
      	<servlet-name>demo2</servlet-name>
      	<servlet-class>com.zhao.Demo01</servlet-class>
      </servlet>
      	
      <servlet-mapping>
      	<servlet-name>demo2</servlet-name>
      	<url-pattern>/1demo02</url-pattern>
      </servlet-mapping>
      
     JSP
     
     <form action="1demo02" method="post">
        	<input type="text" name="userName" value=""/>
        	<input type="submit" name="" value="提交"/>
        </form>
      
    

    4 Servlet生命周期

    Servlet的生命周期就是程序的存在周期,Servlet手容器管理,所以容器决定其生命周期

    image

    
    
    public class Demo01 extends HttpServlet {
    	public void init(){
    		System.out.println("初始化。。。。。。");
    	}	
    	public void doGet(HttpServletRequest req,HttpServletResponse response){
    		response.setCharacterEncoding("gbk");
    		PrintWriter printWriter = null;
    		try {
    			printWriter = response.getWriter();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		printWriter.write("姓名是:");
    		String username = req.getParameter("userName");
    		printWriter.write(username);
    	}
    	
    	public void doPost(HttpServletRequest req,HttpServletResponse resp){
    		resp.setCharacterEncoding("gbk");
    		this.doGet(req, resp);
    	}
    	
    	public void destory(){
    		System.out.println("销毁。。。。。");
    	}
    	
    }
    
    

    5 取得初始化配置信息

    • init() 这个方法里面可以传入一个ServletConfig对象,此对象可以接受初始化参数
    • 所有的初始化参数都是在web.xml里面配置
    • 如果同时存在init(),和init(ServletConfig config) 只有第二个才会被调用
    public void init(ServletConfig config){
    		System.out.println("获取config信息");  
    		String string = config.getInitParameter("ref");
    		System.out.println(string);
    	}
    
     <servlet>
      	<servlet-name>demo2</servlet-name>
      	<servlet-class>com.zhao.Demo01</servlet-class>
      	<init-param>
      		<param-name>ref</param-name>
      		<param-value>zhaodi</param-value>
      	</init-param>
      </servlet>
    

    6 取得其余的内置对象Session,application

    • servelt本身只提供request,response对象,如果想获取Session对象只可以通过request对象获取,request.getSession();

    session的实现原理

    服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务

    HttpSession session = req.getSession();// 这个时候已经把sessionID存入客户端Cookie里面了
    
    • 获取application对象
    ServletContext application = this.getServletContext();
    

    7 servlet跳转

    服务端和客户端跳转的区别

    • 服务端:地址栏不发生改变,可以传递request范围的属性,属于无条件跳转,只要之心感到了就立马跳转
    • 客户端:地址栏发生改变,无法传递request范围属性,实在所有的操作都执行完毕之后才进行跳转的,语法为response.sendRedirect()
    response.sendRedirect("index.jsp");// 客户端跳转
    
    req.getRequestDispatcher("index.jsp").forward(req, response);// 服务端跳转
    

    8 MVC设计模式应用

    什么事MVC设计模式

    应用

    一个小小的程序员
  • 相关阅读:
    关于Unity中调试C#的方法
    关于Unity的C#基础学习(二)
    关于代码命名规范
    关于Unity的C#基础学习(一)
    关于Unity的游戏的运行模式
    关于Unity的组件和作用
    关于Unity的开发模式
    关于Unity的坐标系
    关于Unity中场景视图的使用
    sql 追踪 神器
  • 原文地址:https://www.cnblogs.com/zhaod/p/8667147.html
Copyright © 2011-2022 走看看