servlet1

b/s
1、开发成本低
2、管理维护简单
3、产品升级遍历
4、用户使用房兵,故障概率低。
不足:
1、安全性不同
2、客户端不能改变,受浏览器限制
Servlet
Servlet(java服务器小程序)是java编写的服务器程序,特点:
1、由服务器端调用和执行的;
2、用java语言编写的
3、按照Servlet规范开发的
4、功能强大,可以完成几乎所有的网站功能
5、学习jsp的基础
Tomcat三个功能:
1、web服务器
2、jsp容器
3、servlet容器
安装Tomcat要配置环境变量
1、jdk环境变量(最新的其实只安装配置jre就可以了)
2、Tomcat环境变量配置

1,新建变量名:CATALINA_BASE,变量值:C:	omcat
2,新建变量名:CATALINA_HOME,变量值:C:	omcat
3,打开PATH,添加变量值:%CATALINA_HOME%lib;%CATALINA_HOME%in
   path环境变量还可以设置成安装bin目录地址,就可以命令行直接打开Tomcat
打开浏览器,在地址栏中输入http://localhost:8080回车,如果看到Tomcat自带的一个JSP页面,说明你的JDK和Tomcat已搭建成功。

配置文件

配置文件:
用户名:admin
密码:admin
tomcat-users.xml:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
</tomcat-users>

一个servlet的部署

<servlet>
	<!-- 给servlet取名,这个名字是任意的,不要用汉字-->
	<servlet-name>hello</servlet-name>
	<!-- 指明servlet的路径(包名+类名)-->
	<servlet-class>EclipseWorkSpace.javastudy.src.servletDemo.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
	<!--给你的servlet取名,任意的-->
	<servlet-name>hello</servlet-name>
	<!--这是在浏览器中输入的访问该servlet的url-->
	<url-pattern></url-pattern>
</servlet-mapping>

程序

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{
	public static int i = 0;

	//销毁servlet实例,释放内存
	/*
	 * 销毁servlet实例:
	 * 1、reload该servlet(webapps)
	 * 2、关闭Tomcat,或者关机
	 * */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	//得到servlet配置文件
	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}
	
	//此函数用于初始化该servlet,该函数只会被调用一次(类似于构造器),当用户第一次访问该servlet,被调用
	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init");
		
	}

	//用于处理业务逻辑,程序员应当把业务逻辑代码写在这里
	//当用户访问servlet,都会被调用
	//ServletRequest 用于获得客户端信息
	//ServletResponse 向客户端返回信息
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//从res中得到PrintWriter,然后通过IO流返回信息
		PrintWriter pw = res.getWriter();
		pw.println("返回到浏览器的信息");
		
	}

}

Servlet是部署在容器中的,它的生命周期由容器管理
Servlet生命周期分为以下几个阶段:
1、装在servlet,由相应的容器完成
2、创建一个servlet实例
3、调用servlet的init()方法,该方法只会在第一次访问该servlet时被调用一次
4、服务,调用servlet的service()方法,一般业务逻辑在这里处理,该方法访问servlet时,都会被调用
5、销毁,调用servlet的destory()方法,销毁servlet实例,该方法再一下情况被调用

  • tomcat重新启动
  • reload该Webapp
  • 重启电脑

通过继承GenericServlet开发servlet
通过GenericServlet开发servlet只需要重写service方法

package servletDemo;

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

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class GenerciServletTest extends GenericServlet{

	@Override
	//ServletRequest 用于获得客户端信息
	//ServletResponse 向客户端返回信息
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		try{
			PrintWriter pw = res.getWriter();
			pw.println("hello");
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
}

通过集成HttpServlet开发servlet
需要重写doGet、goPost方法。
表单提交数据get请求和post请求的区别:
1、从安全性看get<post,get提交的数据会在浏览器的地址栏显示
2、从提交的内容大小看,get<post,get提交的数据不能大于2k,而post提交的数据理论上不受限制,但实际上建议不大于64k
3、请求响应速度看:get>post,get请求服务器立即处理,post请求可能形成一个队列请求。

import java.io.PrintWriter;

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

public class HttpServletTest extends HttpServlet{

	/**
	 * 
	 */
	//处理get请求
	public void doGet(HttpServletRequest req, HttpServletResponse res){
		//业务逻辑
		try{
			PrintWriter pw = res.getWriter();
			pw.println("hello");
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	//处理post请求
	public void doPost(HttpServletRequest req, HttpServletResponse res){
		this.doGet(req, res);
	}
}

重新部署可能web服务器找不到信息,到处理页面reload一下就可以
中文乱码问题:

HttpServletResponse res
res.setContetntYype("text/html;charset=gbk");

获得浏览器的信息

HttpServletRequest req
string s1 = req.getParameter("usename");
string s2 = req.getParameter("控件名");
跳转到指定文件:
res.sendRedirect("");//你要到的servlet那个url

同一用户的不同页面如何共享数据
1、cookie

服务器在客户端保存用户的信息,比如登录名、密码等,就是cookie。
一般保存在客户端的c:Documents and Settings目录下
Cookie的用处:
1、保存用户名、密码,在一定时间不用重新登录
2、记录用户访问网站的喜好,比如:有无背景音乐等
3、网站的个性化:比如定制网站的服务、内容

2、sendRedirect跳转

通过该方法可以将信息传送到下一个页面:
sendRedirect("welcome?usename="shunping);;的形式
1、welcome代表你要跳转的nameservlet的url
2、servlet url名和变量之间有?号
3、如果传递两个以上的值,用&号
如果传递的是中文,可能会有乱码,需要处理一下。
有点:传送信息的速度比较快
缺点:只能传送字符串,而不能传送一个对象
可以将一个页面的信息传递给另一个页面

3、session技术


4、隐藏表单的提交(form)

原文地址:https://www.cnblogs.com/changzuidaerguai/p/7192726.html