您的位置:首页 > 其它

servlet笔记

2016-04-24 18:04 239 查看

servlet笔记

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

Tomcat的容器分为四个等级,Servlet的容器管理context容器,一个context对应一个web工程



继承关系

Servlet(interface) 三个方法 Init() service() destroy()

GenericServlet(Abstract class) 与协议无关的Servlet

HttpServlet(Abstract class) 实现了http协议的servlet

自定义的servlet 一般重写(覆盖)doGet()与doPost()方法

手工编写一个Servlet

继承HttpServlet

重写doGet()和doPost()

在web.xml中注册Servlet

javaEE 5.0

Superclass javax.servlet.http.HttpServlet

快捷方式-source(shift+alt+s)-override/implements methods(重写从父类继承而来的方法)

index.jsp

<a href="servlet/HelloServlet">Get方式请求HelloServlet</a>
<form action="servlet/HelloServlet" method="post">
<input type="submit" value="Post方式请求HelloServlet" />
</form>


servlet

package 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;
import javax.xml.ws.Response;

public class HelloServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("------处理Get()请求------");

PrintWriter out =  response.getWriter();
out.println("<strong>Hello servlet</strong> <br>");

}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub

System.out.println("------处理Post()请求------");
response.setContentType("text/html;charset=utf-8");
PrintWriter out =  response.getWriter();
out.println("<strong>Hello servlet.method:post</strong> <br>");

}

}


web.xml的配置

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>


将这段代码置于web-app标签内

注册方式

使用myEclipse创建servlet

new-servlet

IDE自动生成的servlet相关的文件

tomcat装载servlet

自动装载

servlet容器启动时自动装在某些servlet,实现它只需要在web.xml文件的标签内添加代码

<loadon-startup>
数字优先级,越小优先级别越高
</loadon-startup>


客户端首次发送请求

在servlet容器启动后,客户向Servlet发送请求

servlet类文件更新

重新装载Servlet

class文件更改

servlet与九大内置对象



servlet获取表单信息

servlet获取表单,request.getParameter(string);

获取复选框类型,getParameterValues(string);

获取成功之后,将信息保存在session中

保存之后使用内部转发或者请求重定向,显示用户信息

servlet获取表单数据源代码



路径跳转

path变量表示项目的根目录

<a href="<%=path%>/servlet/HelloServlet" />


web.xml中的url-pattern处必须以/开头,表示项目的根目录

请求重定向

response.sendRedirect(request.getContextPath()+"/yourfile");


请求重定向的使用方式,获得上下文.

获得上下文的方法,request.getContextPath()方式

服务器内部跳转

使用服务器内部跳转方式,/代表了项目的根目录

request.getRequestDispatcher("/yourfile").forward(request,response);


Servlet获取初始化参数

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

通过超链接的方式访问servlet

web.xml中servlet标签内init-param标签中的子标签来设置初始化参数,代码段如下

<servlet>

...

<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>


通过getInitParameter(“string”)获取初始化参数

MVC模型



EIS 企业信息系统

model2





购物车示例

购物车源代码

购物车关系图

关系图涂鸦作品,只为了加深理解

购物车设计

属性:

购买商品的集合

方法:

添加,删除,计算总金额

保存属性的数据结构

key-value,采用map方式存储数据结构



测试购物车

遍历购物商品的集合

两个重写

如何保证购物车中不出现相同商品的记录

重写Items商品类的hashcode()和equals方法

购买数量的累加

servlet设计



实现购买数量的增加和删减功能的实现

<td>购买数量:<span id="sub" onclick="sub();">-</span><input type="text" id="number" name="number" value="1" size="2"/><span id="add" onclick="add();">+</span></td>


界面层调用

function selflog_show(id)
{
var num =  document.getElementById("number").value;
J.dialog.get({id: 'haoyue_creat',title: '购物成功',width: 600,height:400, link: '<%=path%>/servlet/CartServlet?id='+id+'&num='+num+'&action=add', cover:true});
}


显示购物车

首先判断session中是否有购物车对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: