网络程序-BS架构 Browser+Web Server+DB
特点:数据库只负责数据库的管理;Web服务器提供所有的业务逻辑的处理;浏览器负责提供操作界面
Servlet是Sun公司指定的一种用来扩展Web服务器功能的组件规范
组件规范包括
组件:在软件开发行业,符合一定规范,实现部分功能,并且需要部署到容器当中才能运行的软件模块
容器:符合一定规范,提供组件运行环境的一个程序
HTTP是由w3c(万维网联盟)制定的一种应用层协议,用来定义浏览器与Web服务器之间如何通信以及通信的数据格式
当Web容器收到一个HTTP请求时,通信数据由Web容器负责封装和提供,这些信息被解释为两个对象
与请求数据对应的是HttpServletRequest类型的对象;与响应数据对应的是HttpServletResponse类型的对象
Servlet获取请求参数值的方法getParameter(name) getParameterValues(name)
请求方式是客户端对话服务器时的一想说明,是区分请求种类的关键 Get Post
Get 在地址栏输入一个地址 点击链接 表单默认提交
Post 请求参数添加到实体内容中,可提交大量数据 相对安全
表单乱码 编码与解码方式不一致时,就会出现乱码
1.表单提交乱码
Post
1.<meta http-equiv="content-type" content="text/html;charset=utf-8">
2. request.setCharacterEncoding("utf-8")
Get
1.使用meta
2.String username=request.getParameter();
username = new String(username.getByTes("iso-8859-1"),"utf-8");
2.返回页面乱码
response.setContentType("text/html;charset=utf-8");
Servlet与数据库连接 使用JDBC访问数据库
10.1路径处理
服务器向浏览器发送一个302状态码及一个Location消息头,浏览器收到后会立即向重定向地址发出请求
response.sendRedirect(String url)
请求路径 http://ip:port/appName/xxx.html
web.xml Servlet的主要作用为充当控制器的角色,即接受请求并分发给不同的资源,只要有一个Servlet就可以完成分发的过程
10.2Servlet对象
Servlet的生命周期:容器创建Servlet对象,为Servlet对象分配资源,调用Servlet对象的方法来处理请求,销毁Servlet
Servlet接口主要包括 init方法 service方法 destory方法
Servlet的 GenericServlet抽象类实现了servlet接口,HttpServlet抽象类继承了GenericServlet,实现了service方法
容器启动后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象,该对象就是servlet上下文
特点:唯一性(一个Web应用对应一个servlet) 一直存在
Servlet上下文的作用及特点
作用一 使用setAttribute绑定数据;作用二 使用removeAttribute移除绑定数据;作用三使用getAttribute获取绑定数据
10.3Servlet线程安全问题
容器收到请求之后,会启动一个线程来进行相应的处理,默认情况下,容器只会为每个Servlet创建一个实例。如果同时有多个请求访问同一个Servlet,则肯定会有多个线程访问这个Servlet的实例。如果这些线程要修改Servlet实例的某个属性,就有可能发生线程安全问题。
使用synchronized对代码加锁即可