Servlet总结

Servlet总结

开发工具与关键技术:Java
作者:陈希雄
撰写时间:2019/6/08
使用:
1、 创建普通的 java 类并继承 HttpServlet
2、 覆写 service 方法
3、 在 service 方法中书写逻辑代码即可
4、 在 webRoot 下的 WEB-INF 文件夹下的 web.xml
文件中配置 servlet
配置配置Servlet  
   配置servlet类路径  
  <servlet>
  <servlet-name>DemoServlet</servlet-name>
  <servlet-class>com.dx.wed.DemoServlet</servlet-class>
  </servlet>
<!--配置访问方式  -->
  <servlet-mapping>
  <servlet-name>DemoServlet</servlet-name>
  <url-pattern>/servlet/DemoServlet</url-pattern>
  </servlet-mapping>
Servlet的生命周期:
1、从第一次调用到服务器关闭
2、如果Servlet在web.xml中配置了load-on-startup,生命周期为从服务器启动到服务器关闭
注意:
   init方法是对Servlet进行初始化一个方法,会在Servlet第一次加载进行储存执行
   destory方法是在servlet被销毁时执行,也就服务器关闭时
Servlet方法和doGet方法和doPost方法的区别
Service方法:
    可以处理get/post方式的请求,如果servlet中有service方法时,会优先调用service方法对请求进行处理
doGet方法:处理get方式的请求
doPost方法:处理post方式的请求 
注意:
如果在覆写的service方法中调用父类的service方法(super.service(arg0,arg1)),
则service方法处理完成后,会再次根据请求方式响应goGet和doPost方法执行。所以,一般情况下我们是不在覆写的service中调用父类的service方法的,避免出现405错误。
servlet常见错误
404:资源未找到
原因一:在请求地址中servlet的别名书写错误
原因二:虚拟项目名称拼接错误 
500错误:
错误一:
java.lang.ClassNotFoundException: com.dx.servlet.ServletM0thod
解决:
在web.xml中校验servlet类的全限定路径是否拼接错误
错误二:
因为service方法体的代码执行错误导致
解决:根据错误提示对service方法体中的代码执行错误更改 
405错误:
原因:
请求方式和servlet中的方法不匹配所造成的。
解决:
尽量使用service方法进行请求处理,并不要在service方法中调用父类的service 
request对象学习:
作用:request对象中封存了当前请求的所有请求信息
使用:
获取请求头数据
//获取请求方式 
    	String method= req.getMethod();
    	StringBuffer url=req.getRequestURL();//获取URL
    	String uri=req.getRequestURI();//获取uri
    	String h=req.getScheme();//获取协议
获取请求行数据
//获取指定请求行信息
    	String value=req.getHeader("12");
    	System.out.println(value);
    	//获取所有请求行的键的枚举
    	Enumeration e=req.getHeaderNames();//枚举集合 
    	while(e.hasMoreElements()){
    		String name=e.nextElement().toString();
    		System.out.println(name+": "+req.getHeader(name));
    	}
//获取用户数据
    	String name=req.getParameter("uname");
    	String pwd=req.getParameter("pwd");
    	System.out.println(name+":"+pwd);
String[] strs=req.getParameterValues("");//返回同键名多个值
注意:如果获取的请求数据不存在,不会报错,返回null 
注意:
request对象有tomcat服务器创建,并作为实参传递给处理请求的servlet的servlet方法 
response对象学习:
 作用:
用来响应数据到数据到浏览器的一个对象
使用:
设置响应头
setHeader(String name,String value);//在响应头中添加响应信息,但是同键会被覆盖
addHeader(String name,String value)://在响应头添加响应信息,但是不会覆盖
设置响应状态
sendError(int num,String msg);//自定义响应码
设置响应实体
resp.getWrite().write(String str)//响应具体的数据给浏览器
设置响应编码格式:
resp.setContentType("text/html;charset=utf-8");
总结:
servlet请求处理代码流程:
1、设置响应编码格式
2、获取请求数据(获取jsp页面数据)
3、处理请求数据
      数据库操作(MVC思想)
4、响应处理结果(返回给浏览器)
请求中文乱码解决:
1、使用String进行数据重新编码
name=new String(name.getBytes("iso8859-1"),"utf-8");
2、使用公共配置
   get方式
    步骤一:
    req.setCharacterEncoding("utf-8");
    步骤二:
    在tomcat的目录下的conf目录中修改server.xml;在Connector标签中增加属性useBodyEncodingForURI="true"
   post方式
   req.setCharacterEncoding("utf-8");
Serclet流程总结
     浏览器发起请求到服务器(请求)
     服务器接收浏览器的请求,进行解释,创建request对象储存请求数据
     服务器调用对应的servlet进行请求处理,并将request对象作为传递给servlet的方法
servlet的方法执行进行请求处理 
           1、设置请求编码格式
          2、设置响应编码格式
           3、获取请求信息
           4、处理请求信息
                4.1、创建业务层
                4.2、调用业务层对象的方法
            5、响应处理结果
数据流转流程:
浏览器--->服务器--->数据库
浏览器<---服务器<---数据库
请求转发学习:
作用:实现多个servlet联动操作处理请求,这样避免代码冗余,让servlet的职责更加明确
使用:
req.getRequestDispatcher("要转发的地址").forward(req, resp);
地址:相对路径,直接书写servlet的别名即可
特点:
一次请求,浏览器地址栏信息不改变
注意:
请求转发后直接return结束即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值