9.17 Servlet

跳转:

客户端跳转:直接使用HttpSerletResponse接口的sendRedirect()方法即可(但此跳转只能传递session范围的属性,无法传递request范围的属性)

req.getSession().setAttribute("name","jordan");//session属性

req.setAttribute("id","23");//request属性

resp.sendRedirect("xx.jsp");//页面跳转

服务器跳转:没有jsp<jsp:forward>指令 所以要用RequestDispatcher()接口完成,可以收到sessionrequest属性

req.getSession().setAttribute("name","jordan");//session属性

req.setAttribute("id","23");//request属性

//实例化RequestDispatcher对象  并指定跳转路径

RequestDispatcher rd = req.getRequestDispatcher("xx.jsp");

Rd.forward(req,resp);

 

 

MVC:

M(Model)模型层:完成一个独立的业务操作组件,一般都是以JavaBean或者EJB的形式进行定义的。

V(View)显示层:主要负责接受Servlet传递的内容,并且调用JavaBean,将内容显示给用户。

C(Controller)控制层:所有的用户请求参数,判断是否合法,根据请求的类型调用JavaBean执行操作并将最终的处理结果交由显示层进行显示。

    当用户请求提交时,所有的请求都会交给Servlet进行处理,然后由Servlet调用JavaBean,并将JavaBean的操作结果通过RequestDispatcher接口传递到JSP页面上,由于这些要现实的内容只是在一次请求---回应中有效,所以MVC设计模式中,所有的属性传递都讲使用request属性范围传递,这样可以提升代码的可操作性

 

 

能使用pagepageContext)就不要用request 

能使用request 就不要用session  

能使用session就不要用application

Session主要用于登陆验证较多  request主要死在MVC模式上使用 将Servlet的内容交给JSP显示 而且这种显示在一次提交之后属性就消失了

 

 

在JSP中只包含3种类型的代码

接受属性:接受从Servlet传递过来的属性

判断语句:判断传递到JSP中的属性是否存在

输出语句:使用迭代或者VO进行输出

JSP中唯一允许导入的包只能是java.util

 

 

过滤器

Public void init(FilterConfig config)throws ServletException{

String initParam = config.getInitParameter("ref");

}

Public void doFilter(....){

System.out.println("执行doFilter方法之前");

chain.doFilter(request,response);

System.out.println("执行doFilter方法之后");

}

Init方法只执行一次  doFilter会执行两次 一次在FilterChain之前一次在FilterChain之后

登陆验证

HttpServletRequest req = (HttpServletRequest ) request;

HttpSession ses = req.getSession();//取得session

If(ses.getAttribute("userid") != null){//判读是否登陆

chain.doFilter(request,response);//传递请求

}else{

request.getRequestDispatcher("xx.jsp").forward(request,response);//跳转到登录页

}

通过HttpServlet取得当前的Session 然后判断是否存在userid属性 如存在则登录过 如不存在则跳到登陆页面

 

监听器

可以对application  Session  request 三种操作进行监听

Application:实际上是对ServletContext(Servlet上下文)监听

Public class contextInitalized(ServletContextEvent event){ //上下文初始化时触发

System.out.println(“event.getServletContext().getContextPath()”);

}

Public class contextDestroyed(ServletContextEvent event){}  //上下文销毁时触发

Session:  sessionCreated  session sessionDestroyed

Request: requestInitalized  requesDestroyed

如要配置监听器、过滤器和简单Servlet的时候建议按

(1)先配置过滤器:<filter> <filter-mapping>

(2)再配置监听器:<listener>

(3)最后配置简单Servlet<servlet> <servlet-mapping>

在线用户监听

 
 

Servlet是使用java实现的CGI程序,但是与传统的CGI不同的是,Servlet采用多线程的方式进行处理,所以程序的性能更高

要想实现一个Servlet则一定要继承HttpServlet类,并根据需要覆写响应的方法,还需要在web.xml文件中配置Servlet后才可以使用

Servlet生命周期控制的3个方法:init service(doGetdoPost)destrop

Servlet程序中可以通过HttpServletRequest接口的getSession()方法获得一个HttpS对象

Servlet程序中可以通过getServletContext()方法获得ServletContext对象

Servlet中设计模式是JavaEE的核心设计模式,使用MVC可以使代码的层次更加清晰,程序维护更加方便

要实现一个过滤器,一定要实现Filter接口,并覆写此接口中相应方法,所有的过滤器都要执行两次,过滤器同意需要在web.xml中配置,但是配置的路径表示的是过滤路径

监听器可以完成对Web操作的监听,主要监听applicationsessionrequest的操作

EL表达式

使用4种不同表达式语言输出同一个属性名称,将按照如下顺序查找:

Pageàrequestàsessionàapplication

pageContext.setAttribute(“info”,”page属性范围”);  //设置一个page属性

request.setAttribute(“info”,” request属性范围”);  //设置一个request属性

session.setAttribute(“info”,” session属性范围”);  //设置一个session属性

application.setAttribute(“info”,” application属性范围”);  //设置一个application属性

(输出为  page属性范围)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值