java web 进阶篇(一) servlet程序

本文介绍了Servlet的基本概念,包括它的定义、工作原理以及如何通过配置文件映射Servlet程序。此外,还详细讲解了如何在Servlet中处理HTTP请求和响应,探讨了Servlet的生命周期,并介绍了会话管理和上下文对象的应用。

Servlet简称服务器端小程序,是使用java语言编写的服务器端程序,可以向jsp一样动态生成动态的web页面。它是java对CGI程序的实现。但是servlet采用了多线程。

一个简单的servlet程序编译完成后,还不能立即被访问,是因为所有的servlet程序都是以class文件存在的,所以还必须在WEB-INF\web.xml文件中进行servlet程序的映射配置。

<servlet>                                                      //首先定义servlet

<servlet-name>hello</servlet-name>  //与servlet-maping相对应

<servlet-class>cn.com.HelloServlet</servlet-class>

</servlet>

<servlet-mapping>                                      //映射路径

<servlet-name>hello</servlet-name>//与servlet相对应

<url-pattern>/helloServlet</url-patten>//页面的映射路径

</servlet-mapping>

从运行流程来看,先是通过url-patten的页面映射找到sevlet-name,然后根据servlet-name找到class文件。



我们在servlet输出html页面内容时,我们可以在doget方法内,当然form表单提交需要用get方法。response是服务器对客户端的应答,request是客户端对服务器的请求。

String info=request.getParameter("info");//从请求中获取到值。

PrintWriter out=response.getWriter();//准备输出

out.println("<html>");

out.println("</html>");



servlet生命周期包括加载程序、初始化、服务、销毁、卸载5个部分。


可以取得其他内置对象

public  HttpSession getSession() 返回当前的Session

public HttpSession getSession(boolean create)返回当前的session,如果没有则创建一个新的session对象返回。

例如在servlet中

HttpSession ses=req.getSession();

System.out.println(ses.getId());

ses.setAttribute("name","lili");//设置属性

ses.getAttribute("name");//取得属性内容



取得ServletContext对象

application内置对象是ServletContext接口的实例,表示的是servlet的上下文。

我们可以在定义的servlet对象中如下使用

ServletContext app =super.getServletContext();

System.out.println("真实路径是:" app.getRealPath("/"));



Servlet跳转部分知识

直接使用HtpServletResponse接口的sendRedirect()方法接口即可,但是此跳转只能传递session范围的属性,而无法传递request范围的属性。

而在Servlet中没有jsp中的<jsp:forward>指令,如果想要执行服务器端跳转就必须依靠RequestDispatcher接口完成,此接口提供了如下方法:

public void forward(ServletRequest request, ServletResponse response)

throws ServletException ,IOException页面跳转


public void include(ServletRequest request,  ServletResponse  response)throws... 页面包含

使用此接口还需要使用ServletRequest接口的如下方法进行实例化。

public RequestDispatcher getRequsetDispatcher(String path)取得RequestDispatcher接口实例


如下面例子

request.getSession().setAttribute("name", "ling");

request.setAttribute("info", "nihao");

RequestDispatcher rd=requset.geRequestDispatcher("get_info.jsp");

rd.forward(request,response);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值