jspweb里面用到的servlet跳转页面的方法

使用的jar包只有

commons-lang3-3.5.jar

运行时,tomcat会先根据web.xml里面的信息,查找servlet

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  3. <display-name>servlet</display-name>
  4. <welcome-file-list>
  5. <welcome-file>index.jsp</welcome-file>
  6. </welcome-file-list>
  7.  
  8. <servlet>
  9. <servlet-name>servlet</servlet-name>
  10. <servlet-class>com.javaweb.action.Servlet</servlet-class>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>servlet</servlet-name>
  14. <url-pattern>*.do</url-pattern>
  15. </servlet-mapping>
  16. </web-app>
  1. <servlet> 就是你注册的servlet和他的物理地址
    <servlet-mapping>servlet的相对地址,就是在.jsp中怎么用
  2.  
  3. 然后就是根据欢迎页面index.jsp等待用户操作
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%
  4. String path = request.getContextPath();// 获得当前的项目根目录路径
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
  6. //完整路径
  7. %>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  12. <title>这是首页</title>
  13. </head>
  14. <body>
  15. <table border=0 cellpadding=0 cellspacing=0 style="margin:auto;border-collapse:separate; border-spacing:10px;">
  16. <tr>
  17. <td>
  18. servlet根目录路径:<%out.print(path);%>
  19. </td>
  20. </tr>
  21. <tr>
  22. <td>
  23. servlet完整路径:<%out.print(basePath);%>
  24. </td>
  25. </tr>
  26. <tr>
  27. <td>
  28. <!--后缀名是.do的直接根据目录找到first方法-->
  29. <a href="<%=basePath%>/first.do">第一的英文</a>
  30. </td>
  31. </tr>
  32. <tr>
  33. <td>
  34. <!--?的是-->
  35. <a href="<%=basePath%>/.do?op=second">第二的英文</a>
  36. </td>
  37. </tr>
  38. <tr>
  39. <td>
  40. <!--触发?的else选项,常用来放错误信息-->
  41. <a href="<%=basePath%>/.do?op=WOSUIBIANDADE">第三的英文</a>
  42. </td>
  43. </tr>
  44. </table>
  45. </body>
  46. </html>
  1.  

servlet的具体响应

  1. package com.javaweb.action;
  2.  
  3. import java.io.IOException;
  4. import java.lang.reflect.InvocationTargetException;
  5. import java.lang.reflect.Method;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import org.apache.commons.lang3.StringUtils;
  13.  
  14. public class Servlet extends HttpServlet{
  15.  
  16. /**
  17. * 用于版本控制
  18. */
  19. private static final long serialVersionUID = -2357925750878300415L;
  20.  
  21. @Override
  22. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  23. // TODO Auto-generated method stub
  24. doPost(req, resp);
  25. }
  26.  
  27. @Override
  28. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  29. // TODO Auto-generated method stub
  30. //纯碎是用来判断有没有错误
  31. String url=req.getServletPath();
  32. String method=url.substring(1,url.lastIndexOf("."));
  33. try {
  34. Method met=getClass().getDeclaredMethod(method, HttpServletRequest.class,HttpServletResponse.class);
  35. try {
  36. met.invoke(this, req,resp);
  37. } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
  38. e.printStackTrace();
  39. }
  40. } catch (NoSuchMethodException e) {
  41. e.printStackTrace();
  42. } catch (SecurityException e) {
  43. e.printStackTrace();
  44. }
  45. //使用?跳转页面
  46. req.setCharacterEncoding("UTF-8");
  47. String op=req.getParameter("op");
  48. if(StringUtils.isNotBlank(op)){
  49. if("second".equalsIgnoreCase(op)){
  50. second(req, resp);
  51. }else{
  52.  PrintWriter out=resp.getWriter();//调用窗口
                    out.println("THIRD");
  53.  
  54. }
  55. }
  56. }
  57.  
  58. public void first(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  59. resp.sendRedirect("first.jsp");
  60. }
  61. public void second(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  62. resp.sendRedirect("second.jsp");
  63. }
  64. }

显然用?的方法和用.do的方法都能实现同样的功能

但是在大量方法同时存在的时候?方法可以用于区分不同方面的方法

  1. req.getParameter("login");
  1. req.getParameter("logout");....
  1. 结果
  1.  
  1.  

  2.  

熟悉servlet的页面跳转的更多相关文章

  1. Jsp与servlet之间页面跳转及参数传递实例(转)

    原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...

  2. Servlet的页面跳转

    Servlet的跳转    内部跳转 req.getRequestDispatcher()        Server--->AServlet--->BServlet        两个S ...

  3. 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例

    初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...

  4. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

  5. Servlet、JSP中页面跳转的方式

    一.Servlet:当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面.1)  redirect 方式response.sendRedirect("success ...

  6. Servlet页面跳转实现方法的区别

    一直对Servlet页面跳转的几种方式理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看. Servlet页面跳转分两部分,一是发生在Servlet,一是在JSP,其实JSP也就 ...

  7. 乱码问题-页面跳转方式-Servlet配置文件

    1.HttpServletRequest a)HttpServletRequest是一个接口,继承了ServletRequest接口: b)HttpServletRequest对象由服务器创建,并作为 ...

  8. jsp/servlet页面跳转丢失样式问题

    问题:使用servlet,如何处理在多路径页面跳转中servlet转发页面样式丢失问题?(例如访问 http://localhost/project/listUser.action后转到http:// ...

  9. JSP、Servlet中的相对路径和绝对路径 页面跳转问题

    转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...

随机推荐

  1. arm-linux-3.4.2移植for2440

    ----------------------------2440 上内核3.4.2移植------------------------ PS:因wifi项目中无wifi驱动,需新内核. 1.首先在内核 ...

  2. oracle--事物---

    一.什么是事务 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败. 如:网上转账就是典型的要用事务来处理,用于保证数 ...

  3. mybatis 学习一 总体概述

    mybatis使用起来不复杂,大体上来说,就是将db连接信息,所有的sql语句信息,都放到配置文件里面,然后去读配置信息,根据db信息,创建好session工厂,然后拿到sqlsession回话之后, ...

  4. WPF 导出Excel(合并单元格)

    WPF 导出Excel(合并单元格) DataTable 导出Excel(导出想要的列,不想要的去掉) ,B1,B2,B3,B4,B5} MisroSoft.Office.Interop.Excel. ...

  5. 共有11款Python 中文分词库开源软件

    件过滤: 排序: 收录时间 | 浏览数 Python 中文分词库 Yaha "哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Ya ...

  6. python 基础 字符串格式化

    print "hello %s %s" % ('wd','pc') c风格 print "hello {1} {0}".format("wd" ...

  7. Java之网络编程UDP和TCP

    注*部分转来的 第1章 网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网 ...

  8. Material使用05 MdListModule模块 MdButtonToggleModule模块

    1 在共享模块中导入MdListModule模块 import { NgModule } from '@angular/core'; import { CommonModule } from '@an ...

  9. AngularJs(Part 11)--自定义Directive

    先对自定义Directive有一个大体的映像 myModule.directive('myDirective',function(injectables){ var directiveDefiniti ...

  10. 使用mahout fpgrowth算法求关联规则

    使用mahout fpgrowth 首先,这篇文章的内容大部分取自国外一篇博客Finding association rules with Mahout Frequent Pattern Mining ...