JavaWeb基础入门--Servlet入门

主要内容:


软件结构发展史:
 

单机时代:例如word、eclipse

联机时代:例如QQ、微信

互联网时代:例如手机淘宝(内部嵌入了浏览器)


B/S模式执行流程:
 


请求与响应:成对出现


J2EE:主要用来开发Web程序

J2EE功能模块:


Apache Tomcat:电脑可以安装Apache Tomcat,然后就会变成Web服务器


J2EE和Tomcat的关系:
 


Servlet:
 


安装Tomcat:


Mac安装Tomcat步骤: 

启动Tomcat服务在其bin目录执行:./startup.sh. 

关闭Tomcat服务在其bin目录执行:./shutdown.sh.  


eclipse J2EE版本安装与配置:

暂时搁置

 


第一个Servlet:
配置步骤省略

FirstServlet.java:

package com.imooc.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class FirstServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//getParameter()接受请求发来的参数
		String name = request.getParameter("name");
		
		String html = "<h1 style='color:pink'>hi,"+name+"!</h1><hr/>";
		
		System.out.println("返回给浏览器的响应数据为:"+html);
		//从服务器返回的输出流
		PrintWriter out = response.getWriter();
		
		//将html返回给浏览器
		out.println(html);
 	}

	

}

web.xml:自己添加规范

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>FirstServlet</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 -->
  <servlet>
  	<!-- servlet的别名 -->
  	<servlet-name>first</servlet-name>
  	<servlet-class>com.imooc.servlet.FirstServlet</servlet-class>
  </servlet>
  <!-- 将servlet与url绑定 -->
  <servlet-mapping>
  	<servlet-name>first</servlet-name>
  	<url-pattern>/hi</url-pattern>
  </servlet-mapping>
</web-app>

输出结果:

在地址栏输入:

http://localhost:8080/FirstServlet/hi?name=Jackso

输出结果:


执行流程为:
 


案例测试:

ShopServlet.java:
 

package test;

import java.io.IOException;
import java.io.PrintWriter;

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

public class ShopServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//getParameter()接受请求发来的参数
		String category = request.getParameter("category");
		
		String html = "<h1 style='color:pink'>"+category+"!</h1><hr/>";
		
		System.out.println("返回给浏览器的响应数据为:"+html);
		//从服务器返回的输出流
		PrintWriter out = response.getWriter();
		
		//将html返回给浏览器
		out.println(html);
 	}

	

}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ServletProj1</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 -->
  <servlet>
  	<!-- servlet的别名 -->
  	<servlet-name>first</servlet-name>
  	<servlet-class>test.ShopServlet</servlet-class>
  </servlet>
  <!-- 将servlet与url绑定 -->
  <servlet-mapping>
  	<servlet-name>first</servlet-name>
  	<url-pattern>/ShopServlet</url-pattern>
  </servlet-mapping>

</web-app>

输出结果:
 


Java Web标准工程结构:
 


Servlet开发与配置:

测试案例:<url-pattern></url-pattern>标签用于配置Servlet的映射地址

SampleServlet.java:

package com.imooc.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class SampleServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
		 
		PrintWriter out = response.getWriter();//向浏览器输出的数据流
		out.println("<a href='http://www.baidu.com'>Baidu</a>");
	}

}

web.xml:
 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>FirstServlet</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 -->
  <servlet>
  	<!-- servlet的别名 -->
  	<servlet-name>sample</servlet-name>
  	<servlet-class>com.imooc.servlet.SampleServlet</servlet-class>
  </servlet>
  
  <!-- 将servlet与url绑定 -->
  <servlet-mapping>
  	<servlet-name>sample</servlet-name>
  	<url-pattern>/sample</url-pattern>
  </servlet-mapping> 
  
</web-app>

输出结果:


编程练习:

ComputerServlet.java:
 

package test;
import java.io.IOException;
import java.io.PrintWriter;

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

public class ComputerServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
		int n = Integer.parseInt(request.getParameter("n"));
		int result1=1;//存储阶乘结果
		int result2=0;//存储累加和
		for(int i = 1;i<=n;i++) {
			result1 *= i;
			result2 += i;
		}
		PrintWriter out = response.getWriter();//向浏览器输出的数据流
		out.println(n+"!="+result1);
		out.println("∑"+n+"="+result2);
	}

}

web.xml:
 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ServletProj1</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 -->
  <servlet>
  	<!-- servlet的别名 -->
  	<servlet-name>computer</servlet-name>
  	<servlet-class>test.ComputerServlet</servlet-class>
  </servlet>
  <!-- 将servlet与url绑定 -->
  <servlet-mapping>
  	<servlet-name>computer</servlet-name>
  	<url-pattern>/computer</url-pattern>
  </servlet-mapping>

</web-app>

输出结果:特殊符号没有输出


请求参数的发送与接收:
 

测试代码:

SampleServlet.java:

package com.imooc.servlet;

import java.io.IOException; 
import java.io.PrintWriter;

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

public class SampleServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
		 
		//getParameter()获取单个参数,返回的是一个String字符串
		String name = request.getParameter("name");
		String mobile = request.getParameter("mobile");
		String sex = request.getParameter("sex");
		
		//getParameterValues()获取多个参数,返回的是一个String数组
		String[] specs = request.getParameterValues("spec");
		 
		PrintWriter out = response.getWriter();//向浏览器输出的数据流
		
		out.println("<h1>name="+name+"</h1 >");
		out.println("<h1>mobile="+mobile+"</h1 >");
		out.println("<h1>sex="+sex+"</h1 >");
 
		for(int i=0;i<specs.length;i++) {
			out.println("<h1>specs="+specs[i]+"</h1 >");
		}
	}

}

student.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学员信息登记表</title>
</head>
<body>
	<h1>学员信息登记表</h1>
	<form action="http://localhost:8080/FirstServlet/sample">
		姓名:<input name="name"/>
		<br/>
		电话:<input name="mobile"/>
		<br/>
		性别:
		<select name="sex" style="width:100px;padding:5px;">
			<option value="male" >男</option>
			<option value="female">女</option>
		</select>
		<br/>
		特长:
		<input type="checkbox" name="spec" value="English"/>英语
		<input type="checkbox" name="spec" value="Program"/>编程
		<input type="checkbox" name="spec" value="Speech"/>演讲
		<input type="checkbox" name="spec" value="Swimming"/>游泳
		<br/>
		<input type="submit" value="提交">
		<br/>
	</form>
</body>
</html>

输出结果:


Get和Post请求:

测试代码:

RequestMethodServlet.java:
 

package com.imooc.servlet;

import java.io.IOException;

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

public class RequestMethodServlet extends HttpServlet {

	// 处理get请求
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// getParameter()获取单个参数,返回的是一个String字符串
		String name = request.getParameter("name");
		response.getWriter().println("<h1 style='color:red'>name=" + name + "</h1 >");
	}

	// 处理post请求
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// getParameter()获取单个参数,返回的是一个String字符串
		String name = request.getParameter("name");
		response.getWriter().println("<h1 style='color:green'>name=" + name + "</h1 >");
	}
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>FirstServlet</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 -->
  <servlet>
  	<!-- servlet的别名 -->
  	<servlet-name>requestMethod</servlet-name>
  	<servlet-class>com.imooc.servlet.RequestMethodServlet</servlet-class>
  </servlet>
  
  <!-- 将servlet与url绑定 -->
  <servlet-mapping>
  	<servlet-name>requestMethod</servlet-name>
  	<url-pattern>/request_method</url-pattern>
  </servlet-mapping> 
  
</web-app>

request_method.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学员信息登记表</title>
</head>
<body>
	<h1>学员信息登记表</h1>
	<form action="/FirstServlet/request_method" method="post">
		姓名:<input name="name"/>
		<br/>
		电话:<input name="mobile"/>
		<br/>
		性别:
		<select name="sex" style="width:100px;padding:5px;">
			<option value="male" >男</option>
			<option value="female">女</option>
		</select>
		<br/>
		特长:
		<input type="checkbox" name="spec" value="English"/>英语
		<input type="checkbox" name="spec" value="Program"/>编程
		<input type="checkbox" name="spec" value="Speech"/>演讲
		<input type="checkbox" name="spec" value="Swimming"/>游泳
		<br/>
		<input type="submit" value="提交">
		<br/>
	</form>
</body>
</html>


Servlet生命周期:


注解简化配置:

测试代码:这样就不用在xml文件中添加了

package com.imooc.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

@WebServlet("/anno")
public class AnnotationServlet extends HttpServlet {

	@Override
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		resp.getWriter().println("I am a annotation servlet");
	}
	
}

输出结果:


设置Servlet启动时加载:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值