JavaWeb——Servlet

Web资源:在开发过程中用到的资源都属于Web资源分为

静态资源:html/css/img等等
动态资源:serverlet、jsp、asp等

软件架构

C/S架构:Client/Server
界面效果好,运行流畅度高,安全性更高。
较多占用硬盘空间,后期维护不方便,可能依赖其他客户端。
B/S架构:Browser/Server
访问便捷,方便维护。
对网络要求较高,安全性较低,界面效果一般。

Web编程使用B/S架构。

Web通信模式

属于请求——响应模式

URL请求路径

每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。

protocol :// hostname[:port] / path / [;parameters][?query]#fragment
协议://主机名[:端口号]/文件路径/[;参数][?查询]#信息片段

Web服务器软件

Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 支持最新的Servlet 2.4 和JSP 2.0 规范 。

Weblogic:大型项目服务器
WebSphere: 大型项目服务器

Tomcat服务器

https://tomcat.apache.org/download-90.cgi

解压软件包:

bin目录:可执行文件
conf目录:配置文件
lib目录:存放库文件
logs目录:日志文件
temp目录:临时文件
webapps目录:应用部署
work目录:jsp文件目录

创建Web项目,并关联到Tomcat

Serverlet

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类

现在创建一个2.5版本的JavaWeb项目。

通过实现Servlet接口来实现服务器响应。

package ink.longpress.www;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class servletTest implements Servlet{

	@Override
	public void destroy() {
	}

	@Override
	public ServletConfig getServletConfig() {
		return null;
	}

	@Override
	public String getServletInfo() {
		return null;
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
	}

	@Override
	public void service(ServletRequest req, ServletResponse response) throws ServletException, IOException {
		//使用service方法来响应请求
		response.getWriter().write("<!DOCTYPE html>");
		response.getWriter().write("<html>");
		response.getWriter().write("<head>");
		response.getWriter().write("<meta charset='UTF-8'>");
		response.getWriter().write("<title>Insert title here</title>");
		response.getWriter().write("</head>");
		response.getWriter().write("<body>");
		response.getWriter().write("hello Servlet");
		response.getWriter().write("</body>");
		response.getWriter().write("</html>");
	
	}
	
}

接下来修改web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>2019-8-1_One</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  
    <display-name>servletTest</display-name>
    <servlet-name>servletTest</servlet-name>
    <servlet-class>ink.longpress.www.servletTest</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>servletTest</servlet-name>
    <url-pattern>/servletTest1</url-pattern>
  </servlet-mapping>
  
</web-app>
下面是html代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Servlet</title>
</head>
<body>

</body>
</html>

通过访问该请求来获取响应
http://127.0.0.1:8080/2019-8-1_One/servletTest1

但实现接口需要重写所有方法,因为需要使用所有方法,所以继承HttpServlet的方法更好:

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet {

	/**
	 * 处理get请求
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
		resp.getWriter().write("处理get请求");
	}

	/**
	 * 处理post请求
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getWriter().write("处理post请求");
	}
}

现在开发中一般使用3.0+版本的Web项目,可以不必写配置文件,也可响应请求。

@WebServlet({ "/ser01", "/ser02" })
public class DemoServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("处理get请求");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("处理post请求");
	}
}

使用Request来接收参数

Request对象接收参数的方法:

getParamater(String param); 根据参数名称获取对应的值, 返回String 如果没有参数名称,得到null; 如果有多个参数名称,获取得是第一个参数的值。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ser03")
public class 获取参数 extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name = request.getParameter("username");
		System.out.println(name);
		String pwd = request.getParameter("password");
		System.out.println(pwd);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}
}

jingsongchan

发表评论

电子邮件地址不会被公开。 必填项已用*标注