【JavaWeb】(6)Servlet

1. Servlet基础

Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”辩称模型来访问这个驻留在服务器内存里的Servlet程序。


2. Tomcat容器等级

Tomcat容器分为四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程。



3. 创建Servlet

Servlet接口有3个方法:init()、Service()、destroy(),GenericServlet是一个与协议无关的抽象类,HttpServlet是一个实现了http协议的抽象类,我们自定义Servlet一般要重写doGet()和doPost()方法

(1). 创建一个类继承HttpServlet类

(2). 重写doGet()或者doPost()方法(也可以覆盖其他方法)

(3). 在web.xml中注册Servlet

例如:

public class FirstSerlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("get请求------");
		resp.setContentType("text/html;charset:UTF-8");
		PrintWriter pw = resp.getWriter();
		pw.print("<h1>hello---get</h1>");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("post请求------");
		PrintWriter pw = resp.getWriter();
		pw.print("<h1>hello---post</h1>");
	}
}
web.xml中配置:

	<servlet>
		<servlet-name>FirstServlet</servlet-name>
		<servlet-class>com.thr.servlet.FirstSerlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>FirstServlet</servlet-name>
		<url-pattern>/servlet/FirstServlet</url-pattern>
	</servlet-mapping>
JSP文件:

	<a href="servlet/EclipseServlet">get方式跳转Servlet</a>
	<form action="servlet/EclipseServlet" method="post">
		<input type="submit" value="post方式跳转Servlet">
	</form>

Servlet中如果遇到中文乱码显示问题,可以在doPost()或者doGet()中开头加入以下语句即可解决:

		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");


4. Servlet生命周期

(1). 初始化阶段,调用init()方法。

(2). 响应客户请求阶段,调用service()方法。由service()方法根据提交方式选择执行doGet()或者doPost()方法。

(3). 终止阶段,调用destroy()方法。


5. Tomcat装载Servlet的三种情况

(1). Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的<Servlet></Servlet>之间添加如下代码:<loadon-startup>1</loadon-startup>,数字越小表示优先级别越高。

(2). 在Servlet容器启动后,客户首次向Servlet发送请求。

(3). Servlet类文件被更新后,重新装载Servlet。

一个Servlet的方法执行顺序:构造方法--->init()方法--->doGet()方法或者doPost()方法--->停止服务器执行destroy()方法。


6. Servlet与九大内置对象



7. Servlet路径跳转

绝对路径:放之四海而皆准的路径
相对路径:相对与当前资源的路径

(1). 超链接和表单跳转

当使用超链接访问地址时,如:

<span style="white-space:pre">	</span><a href="/servlet/HelloServlet">访问HelloServlet</a>
那么,它会直接访问服务器下的路径:http://localhost:8080/servlet/Helloworld。

当修改为:

	<a href="servlet/HelloServlet">访问HelloServlet</a>
访问就变成了:http://localhost:8080/应用名/servlet/Helloworld。

使用绝对路径访问可以使用path变量:

<%
	String path = request.getContextPath();
%>
	<a href="<%=path%>/servlet/访问HelloServlet">访问HelloServlet</a>

也是可以达到相同目的的。这个path表示的是项目的根目录。

表单中action的URL地址写法,和超链接是完全一致的。

(2). web.xml的设置

web.xml中的<url-pattern>标签中,记住要使用"/"开头,这里的"/"表示的是项目的根目录

(3). Servlet的跳转

请求重定向的方式:

使用request.getContextPath()获取上下文对象。

<span style="white-space:pre">	</span>response.sendRedirect(request.getContextPath() + "/test.jsp");

服务器内部跳转:

记得前面加上"/",表示的是项目根目录。

	request.getRequestDispatcher("/text.jsp").forward(request, response);
或者使用

	request.getRequestDispatcher("../text.jsp").forward(request, response);


8. 获取初始化参数

web.xml中配置Servlet时,可以配置一些初始化参数。而在Servlet中可以通过ServletConfig接口提供的方法来取得这些参数。

在<Servlet>标签内配置:

<span style="font-family:Microsoft YaHei;">		<init-param>
			<param-name>item</param-name>
			<param-value>NBA</param-value>
		</init-param></span>
然后在需要取得初始化参数的Servlet中的init()方法中使用:

<span style="font-family:Microsoft YaHei;">		String item = getInitParameter("item");</span>
即可取得我们设定的NBA。

9. MVC

MVC模式:MVC(Model、View、Controller),是软件开发过程中比较流行的设计思想。旨在分离模型、控制、视图。是一种分层思想的体现。



10. Model2

JavaWeb的Model2开发模型就是MVC思想的体现。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值