Java Servlet(数据传输 页面跳转 jsp)

来源:互联网 发布:铁路数据服务平台 编辑:程序博客网 时间:2024/05/16 04:03

Servlet:

运行在Servlet容器中,有意服务器解析运行。

实现方式三种:继承HttpServlet


Web.xml文件配置Servlet(实现路径的解析,找到对应的类)

  <servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>com.itheima.servlet.HelloWorld</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/servlet/hello</url-pattern>
  </servlet-mapping>

三种Servlet实现方式

javax.servlet.Servlet 接口(定义了所有的Servlet)

javax.servlet.GenericServlet(与协议无关的Servlet)

javax.servlet.http.HttpServlet(Http协议下的Servlet)

创建一个Servlet步骤:

1.创建

2.重写

3.配置Web.xm

生命周期:

1.创建Servlet,并调用init方法

2.通过Service方法方法来处理请求

3.destory来销毁Servlet


当我们创建一个Servlet时,第一次访问,会创建Servlet对象,并调用init方法,init方法只调用一次。

开启一个线程来调用Service方法

当下一次访问又开启一个线程来调用Service方法

Servlet对象一般只创建一次,常驻内存

当服务停止或Servlet对象销毁时调用destory方法。


根据请求的的url,在Web.xml文件中查找到具体的Servlet,会默认调用Service。

对与我们来说,它在HttpServlet中对Service方法进行了重写,执行其内容。

在HttpServlet中对Service方法中,会根据不同的请求调用不同的方法。


部署:

将myeclipse下的所有WebRoot的内容部署到tomcat的webapps下,

src下的的内容会部署到tomcat工程下的classes目录下。

路径问题:

浏览器访问服务器几种方式:

1.浏览器地址栏输入(可以直接访问页面JSP)

2.超链接

3.表单

4.JavaScript


ServletContext代表一个Web应用,

每一个Servlet具有自己的servletConfig对象

ServletContext它相当于是一个Web应用,每一个Web应用具有一个ServletContext对象,ServletContext可以被同一个工程中的Servlet共享。

启动时服务器创建

ServletConfig.getServletContext

ServletContext:
1.可以获取全局初始化参数

针对整个Web工程

在web.xml中配置初始化

ServletContext context= this.getServletContext();

context.getInitParameter("");

2.可以帮助我们让Servlet信息共享

ServletContext域对象        域(是一个Map 范围)


3.可以获取路径

4.其它功能

request:请求对象

response:相应对象

Http响应分为三个部分:响应状态行、响应头、响应正文

response.sendRedirect()


request获取请求参数:

request.getParameter();

public String getParameter(String name)

request.getParameterValues();

对于不是一个值的控制,在获取时要使用这个方法,例如:checkbox

public String getParameterValues(String name)

request.getParameternames()

获取表单中所有name值

getParameterMap

public Map<String,String[]> getParameterMap();

将请求参数的name作为key,以输入的值或选定的值作为value

Map遍历方法: for(String key : map.keySet()){       

System( key+""+ Arrays.toString(map.get(key))              )

}

1.非空校验

String.trim().length()>0

2.规则校验

在正则规则校验

request域对象

只要是域对象就有 setAttribute() getAttribute() removeAttribute() getAttributenames()

请求转发代表服务器的内部跳转

rd = getRequestDispatcher("转发的路径")

rd.forward(servletRequest ,servletResponse)

重定向:

response.sendRedirect()

jsp:

<%!      %>用于定义 成员 属性 方法 内部类

<%      %>用于定义局部变量

<%=     %>用于输出

Session服务器端会话域对象

Servlet三大域:

ServletContext  整个Web 应用

HttpSession   一次会话

HttpServletRequset 重定向产生的请求域中


PageContext表示页面域,也可以操作其它三大域:

void setAttribute(String key,Object value,int scope)

void removeAttribute(String key,int scope)

Object getAttribute(String key,int scope)

int Scope是常量

PageContext.PAGE_SCOPE                       表示页面范围

PageContext.REQUEST_SCOPE              表示请求范围

PageContext.SESSION_SCOPE               表示会话范围

PageContext.APPLICATION_SCOPE       表示应用范围

PageContext.setAttribute("","",PageContext.APPLICATION_SCOPE)

//Java类中得到几大域数据的方法

public void m(PageContext p){

p.setAttribute(name, value, scope)

p.getRequest().setAttribute(name, o);

    }

页面jsp内直接用:

request.setAttribute(name, o)

转发:PageContext.forward("/1.jsp")

EL:

{}用于输出 取出四大域对象数据

取出数的方法,先从域中找出 创建对应的对象,调用该类的Set方法。






0 0
原创粉丝点击