Servlet初步学习

Servlet:

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

Tomcat容器等级:

Tomcat容器分为四个等级,Servlet容器管理Context容器,一个Context对应一个Web工程。

手工Servlet编写:

1.继承HttpServlet

2.重写doGet()或者doPost()方法
(看以什么方式提交请求,get还是post)

3.在web.xml中注册Servlet

注册:

要写两个标签 <servlet><servlet-mapping>

第一个 servlet-name 给你的 Servlet 起一个名字。
第二个 servlet-class 要加上package名 package.类名

第一个 servlet-name 与上面一样。
第二个 url-pattern 要跟超链接跳转(href)一样。
(要加 / 在开始的时候,表示根目录下的包)

页面代码:

Get 方式用超链接直接获取就可以(href为 包/Java名(跳转到java文件))
Post 方式用表单按钮跳转,方式类似。

Java代码:(对于doGet()或者doPost()的重写)

继承于 HttpServlet 类,引入 javax.servlet.http.HttpServlet 包。
重写 doGet() 方法,可以用 PrintWriter 去设置输出对象(out),用 response.getWriter() 方法。
之后可以用 out 直接在上面写。
(response.setContentType 设置页面,使out.p里面的html标签可用)
(doPost()方法一样,一模一样)

执行流程图:

Servlet生命周期:

1.初始化阶段,调用 init() 方法(初始化方法)。
(只要服务器运行,初始化就被执行)

2.响应客户请求阶段,调用 service() 方法。由 service() 方法根据提交方式选择执行 doGet() 或者 doPost() 方法。

3.终止阶段,调用 destroy() 方法。
(停止服务器的时候执行(停止Tomcat))

在下列时刻Servlet容器装载Servlet:
Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的<servlet></servlet>之间添加代码:<loadon-startup>1</loadon-startup>数字越小表示优先级别越高。

启动后,客户首次向 Servlet 发送请求。

Servlet类文件被更新后,重新装载Servlet。

Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。

例:

先加载 TestServlet2 ,后加载 TestServlet1

Servlet与九大内置对象:

获取表单数据:
一个类 Users 提供获得和设置各个要获取的数据的方法。
另一个类(Servlet)在 doGet() 中用 request.getParameterValues 方法获得表单数据,并且 new 一个 Users,用 u.set… 方法传进去刚获得的数据以设置
用 request.getSession().setAttribute(“regUser”,u);来把注册成功的用户对象u保存在session中。
最后用 request.getRequestDispatcher 方法转发到另一显示页面(”../userinfo.jsp”)

在最终页面可以用javabeans去获取这些值:
<jsp:useBean id="regUser" class="entity.Users" scope="session">
显示: <jsp:getProperty name="regUser" property="..."/>

(字符串数组可以直接遍历,如 regUser.get…() 去获得,然后用 out 直接显示)

(href 也可以用绝对路径:
String path = request.getContextPath();
<a href="<%=path%>/servlet/HelloServlet">...</a>
path变量表示项目的根目录

(请求重定向目录:response.sendRedirect(request.getContextPath()+”/text.jsp”);
服务器内部跳转则直接 /text.jsp 即可(或者 ../text.jsp)
(斜线表示项目根目录)

获取初始化参数:

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

1.在web.xml中可以布置初始化参数:

用 init-param 标签设置 name 和对应的 value

2.在 servlet 中声明两个变量 username 和 password 并写其get和set方法。

重写 init 方法,用 this.getInitParameter(“username”) 获取初始化参数,用 this.setUsername 这两个 set 方法将获取的参数设置

最后在 doPost 方法中直接用 get 输出即可:

MVC:

MVC模式:软件开发过程中比较流行的设计思想。旨在分离模型、控制、视图。是一种分层思想的体现。

Model2:

MVC思想的体现:

阶段项目小记:

1.购物车中用 HashMap<Items,Integer> 保存商品名字和数量。
用 keySet() 方法可以获得 HashMap 的键集合,返回 Set 。
用 Iterator 去迭代遍历,统计总价。

2.用 Set<Map.Entry<Items,Integer>> 可以直接保存键值对,用 entrySet() 方法获得,返回 Map.Entry<Items,Integer>
用增强型 for 循环直接对键值对进行遍历,输出为:键=值

(尽量使用 entrySet 而不是 keySet,同时对键值遍历比先拿键再拿值遍历效率要高)

3.重写 hashCode 和 equals 方法,使之改变其比较方式。

hashCode:返回每个对象的 hashCode ,重写让其返回 id + 字符串的哈希编码,以达成 当Id相同时,哈希编码相同的效果。

另:containsKey(Key) 可以判断是否有这个 key 值,不用迭代。
put 可以直接覆盖 key-values

Servlet随笔:

由Web Client端发送请求,在Servlet容器中创建HttpRequest和HttpResponse两个对象,把请求封装进Request中,调用service()方法,对请求处理,返回响应信息给客户端。

service():根据请求判断调用doPost或doGet,可以重写,最后super.service();来转入doPost或doGet,每次自动调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值