Servlet

serverlet 学习

  1. serverlet实现的是javax.servlet.servlet接口
  2. 配置web.xml
<servlet>
		<servlet-name><servlet-name>//servlet名称
		<servlet-class></servlet-class>	//servlet处理类
	</servlet>
	<servlet-mapping>
		<servlet-name></servlet-name>//servle名称
		<url-pattern></url-pattern>//servlet访问路径
	</servlet-mapping>

Servlet信息要添加到web.xml中才能被访问

Servlet的生命周期:

  1. 加载Servlet:由Servlet容器完成。
    a. 首次发送请求时加载:(当访问对应的URL时,才加载相应的Servlet)
    b. 自动加载Servlet:(服务器启动时,自动载入内存。)*
    <load-on-startup>1</load-on-startup> <!-- 声明servlet自动加载 -->*
  2. 初始化Servlet方法:init()方法。
  3. 处理请求的方法:service()方法:doGet,doPost
  4. 销毁Servlet:destory()方法;

Servlet之间的跳转:

  1. RequestDispatcher的forward跳转(可以跳到Servlet和JSP、文件直接在后台跳转,浏览器不知道发送了跳转,所以前台的URL是不变的
request.getRequestDispatcher("/index.jsp".forward(request, response) //index.jsp为跳转的页面
  1. URL重定向:
    I.服务器返回的状态码:
response.sendRedirect("/javawebCommon/index.jsp");///javawebCommon/index.jsp为跳转的页面,request不能传递信息到新的页面

中文乱码解决方案:

  1. Servlet输出响应:
response.setCharacterEncoding("utf-8");//要在获取response.getWriter();之前设置编码格式;
  1. 在前台获取到值时,转换为对应的编码格式
<%
		String name = erquest.getParameter("username");
		String name_zh = new String(name.getBytes("编码格式"))
	%>

servlet线程不安全的问题:

我的理解:
1. 服务器开启,创建Servlet进程;
2. 如果有服务,分配一个线程,
3. 服务器关闭,关闭Servlet进程;

由于只有一个进程,所有的线程共享资源,所有如果,定义了全局的变量,就可以被每个线程修改

解决办法

  1. 尽量将每个线程的私有属性定义为局部变量。
  2. 只读属性的最好定义为final类型;

本章小结:

1.JSP应用的前身组件Servlet;
2.在javaweb中,servlet负责接收用户请求HttpServletRequest,在doGet,doPost中处理,并将HttpServletResponse反馈给用户。
3.Servlet可以设置初始化参数。供Servlet内部使用。
4.一个Servlet类只会有一个实例,在它初始化时调用init()方法,销毁时调用destory()方法。
5.Servlet信息需要在web.xml中配置,一个Servlet可以设置多个URL访问,
6.Servlet不是线程安全的,谨慎使用类的变量

posted @ 2016-10-24 00:57  你要坚定  阅读(137)  评论(0编辑  收藏  举报