熟悉servlet的页面跳转
jspweb里面用到的servlet跳转页面的方法
使用的jar包只有
commons-lang3-3.5.jar
运行时,tomcat会先根据web.xml里面的信息,查找servlet
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>servlet</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <servlet>
- <servlet-name>servlet</servlet-name>
- <servlet-class>com.javaweb.action.Servlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>servlet</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- </web-app>
- <servlet> 就是你注册的servlet和他的物理地址
<servlet-mapping>servlet的相对地址,就是在.jsp中怎么用- 然后就是根据欢迎页面index.jsp等待用户操作
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();// 获得当前的项目根目录路径
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
- //完整路径
- %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>这是首页</title>
- </head>
- <body>
- <table border=0 cellpadding=0 cellspacing=0 style="margin:auto;border-collapse:separate; border-spacing:10px;">
- <tr>
- <td>
- servlet根目录路径:<%out.print(path);%>
- </td>
- </tr>
- <tr>
- <td>
- servlet完整路径:<%out.print(basePath);%>
- </td>
- </tr>
- <tr>
- <td>
- <!--后缀名是.do的直接根据目录找到first方法-->
- <a href="<%=basePath%>/first.do">第一的英文</a>
- </td>
- </tr>
- <tr>
- <td>
- <!--?的是-->
- <a href="<%=basePath%>/.do?op=second">第二的英文</a>
- </td>
- </tr>
- <tr>
- <td>
- <!--触发?的else选项,常用来放错误信息-->
- <a href="<%=basePath%>/.do?op=WOSUIBIANDADE">第三的英文</a>
- </td>
- </tr>
- </table>
- </body>
- </html>
servlet的具体响应
- package com.javaweb.action;
- import java.io.IOException;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.lang3.StringUtils;
- public class Servlet extends HttpServlet{
- /**
- * 用于版本控制
- */
- private static final long serialVersionUID = -2357925750878300415L;
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doPost(req, resp);
- }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // TODO Auto-generated method stub
- //纯碎是用来判断有没有错误
- String url=req.getServletPath();
- String method=url.substring(1,url.lastIndexOf("."));
- try {
- Method met=getClass().getDeclaredMethod(method, HttpServletRequest.class,HttpServletResponse.class);
- try {
- met.invoke(this, req,resp);
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- e.printStackTrace();
- }
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (SecurityException e) {
- e.printStackTrace();
- }
- //使用?跳转页面
- req.setCharacterEncoding("UTF-8");
- String op=req.getParameter("op");
- if(StringUtils.isNotBlank(op)){
- if("second".equalsIgnoreCase(op)){
- second(req, resp);
- }else{
- PrintWriter out=resp.getWriter();//调用窗口
out.println("THIRD");- }
- }
- }
- public void first(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- resp.sendRedirect("first.jsp");
- }
- public void second(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- resp.sendRedirect("second.jsp");
- }
- }
显然用?的方法和用.do的方法都能实现同样的功能
但是在大量方法同时存在的时候?方法可以用于区分不同方面的方法
- req.getParameter("login");
- req.getParameter("logout");....
- 结果
熟悉servlet的页面跳转的更多相关文章
- Jsp与servlet之间页面跳转及参数传递实例(转)
原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...
- Servlet的页面跳转
Servlet的跳转 内部跳转 req.getRequestDispatcher() Server--->AServlet--->BServlet 两个S ...
- 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例
初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...
- java servlet 几种页面跳转的方法及传值
java servlet 几种页面跳转的方法及传值 java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...
- Servlet、JSP中页面跳转的方式
一.Servlet:当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面.1) redirect 方式response.sendRedirect("success ...
- Servlet页面跳转实现方法的区别
一直对Servlet页面跳转的几种方式理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看. Servlet页面跳转分两部分,一是发生在Servlet,一是在JSP,其实JSP也就 ...
- 乱码问题-页面跳转方式-Servlet配置文件
1.HttpServletRequest a)HttpServletRequest是一个接口,继承了ServletRequest接口: b)HttpServletRequest对象由服务器创建,并作为 ...
- jsp/servlet页面跳转丢失样式问题
问题:使用servlet,如何处理在多路径页面跳转中servlet转发页面样式丢失问题?(例如访问 http://localhost/project/listUser.action后转到http:// ...
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...
随机推荐
- Centos7 忘记密码的情况下,修改root或其他用户密码
转载:https://blog.csdn.net/wcy00q/article/details/70570043 应用场景 linux管理员忘记root密码,需要进行找回操作. 注意事项:本文基于ce ...
- 利用java mail发送邮件
import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import java ...
- 使用python内置模块os和openpyxl搜索指定文件夹下Excel中的内容
在指定路径下,搜索Excel文件中包含的指定内容,首先需要遍历指定路径,得到该路径下所有Excel文件的绝对/相对路径:然后读取Excel中内容,将文件中的每个单元格的值与要搜索的内容进行判断(正则比 ...
- Ubuntu的apt-get本地源搭配——根据需要自己添加软件作源
试验机器: Ubuntu 12.04.Lubuntu都可,其他版本应该也没问题,服务器ip:192.168.235.133 主机执行步骤: 1.在/var/cache/apt/arch ...
- 【转】webservice
一.WebService概念 Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它 ...
- Ubuntu 与 Windows 共享文件夹
1. Ubuntu关机后 编辑虚拟机设置->option->共享文件夹->添加->确定 完成! 2.共享文件夹后在/mnt/hgfs/文件夹下无法看到共享的文件夹: 解决方法: ...
- 读取某文件夹下所有excel文件 python
import os import pandas as pd from sklearn import linear_model path = r'D:\新数据\每日收益率' filenames = os ...
- SQL数据库操作整理
1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...
- 洛谷P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
- 洛谷P1053 篝火晚会
P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到 ...