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. Centos7 忘记密码的情况下,修改root或其他用户密码

    转载:https://blog.csdn.net/wcy00q/article/details/70570043 应用场景 linux管理员忘记root密码,需要进行找回操作. 注意事项:本文基于ce ...

  2. 利用java mail发送邮件

    import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import java ...

  3. 使用python内置模块os和openpyxl搜索指定文件夹下Excel中的内容

    在指定路径下,搜索Excel文件中包含的指定内容,首先需要遍历指定路径,得到该路径下所有Excel文件的绝对/相对路径:然后读取Excel中内容,将文件中的每个单元格的值与要搜索的内容进行判断(正则比 ...

  4. Ubuntu的apt-get本地源搭配——根据需要自己添加软件作源

    试验机器:   Ubuntu 12.04.Lubuntu都可,其他版本应该也没问题,服务器ip:192.168.235.133     主机执行步骤:   1.在/var/cache/apt/arch ...

  5. 【转】webservice

    一.WebService概念 Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它 ...

  6. Ubuntu 与 Windows 共享文件夹

    1. Ubuntu关机后 编辑虚拟机设置->option->共享文件夹->添加->确定 完成! 2.共享文件夹后在/mnt/hgfs/文件夹下无法看到共享的文件夹: 解决方法: ...

  7. 读取某文件夹下所有excel文件 python

    import os import pandas as pd from sklearn import linear_model path = r'D:\新数据\每日收益率' filenames = os ...

  8. SQL数据库操作整理

    1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...

  9. 洛谷P1072 Hankson 的趣味题

    P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...

  10. 洛谷P1053 篝火晚会

    P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到 ...