jsp-1 简单的应用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");....
结果
jsp-1 简单的应用servlet,并用其跳转页面的更多相关文章
- 使用Eclipse开发Web项目(JSP)——简单登录、无sql
1.使用Eclipse开发Web项目(JSP) tomcat 2.在Eclipse中创建的Web项目: 浏览器可以直接访问webContent中的文件 例如http://localhost:8080/ ...
- JSP简单练习-用Servlet获取表单数据
// javaBean代码 package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.* ...
- JSP制作简单登陆
JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...
- JSP的简单介绍
什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写htm ...
- jsp中获取不到servlet的cookie
今天做登陆,发现jsp中使用document.cookie获取不到servlet生成的cookie,我们可以在浏览器的cookie文件夹中发现,servlet中生成的cookie和jsp中的生成的路径 ...
- 新手详解JAVA+数据库+JSP完成简单页面
本篇以数据库添加为例(本例中数据库名为“xinxi”表单名字为“stud”) 准备---实体层: package entity; public class Student { private Stri ...
- JSP源码、改写Servlet为JSP、查看转译成为Servlet的文件、JSP字符编码设置
概述 在Servlet中编写HTML太麻烦了,应该使用JSP.JSP中可以直接编写HTML,使用指示.声明.脚本(scriptlet)等元素来堆砌各种功能,但JSP最后还是会被容器转译为Servlet ...
- 在jsp中接收并处理servlet传过来的含有bean的List
在jsp中接收并处理servlet传过来的含有bean的List 例如有以下bean package com.test.domain; class Student{ private Stirng na ...
- JSP内置对象与servlet对应关系
隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 request 转译后对应HttpServletRequest/ServletRequest对象 r ...
随机推荐
- 1.2 如何使用LINQ
LINQ作为一种数据查询编码方式,它本身不是独立的开发语言,也不能进行应用程序开发.但是在.NET 4.5中,可以在C#中集成LINQ查询代码. 在任何源代码文件中,要使用LINQ查询功能,必须引用S ...
- 如何使用C API来操作UCI
https://forum.openwrt.org/viewtopic.php?pid=183335#p183335 Compiling UCI as stand alone with an exam ...
- js 图片点击放大功能
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于Mvc3,Ef,领域驱动电子商务系统的EShop开发
分享自己从代码小工一步步走向搭架子,ING... 简单了解UnitOfWork 摘要: UnitOfWorkUnit Of Work模式,即工作单元,它是一种数据访问模式.它是用来维护一个由已经被业务 ...
- ajax的get请求
get和post是http请求方法最主要的两种方式. get: 先实现一个简单的get请求 index.html <!DOCTYPE html> <html lang="e ...
- EF codefirst+mvc4+bootstrap+autofac+ddd 系统共享 祝大家新年开心搬砖
博客园的博友新年好,小弟在此给大伙拜了晚年,感谢一直以来的支持. 在过去的一年,从博客园有400多ASP.NET MVC爱好者加入本人的群,本人在此很感激,并勉励大家一起学习奋斗. 希望在新的一年,继 ...
- NET实现仓库看板的一些感想
NET实现仓库看板的一些感想 从一名技术开发人员到实施人员的蜕变,从不同的角度看待同一个问题,或许会有不一样的结果.这里记录一下最近一个项目实施的案例,非常有感触! 一. 项目情况简介 本次项目是给一 ...
- 测试驱动 ASP.NET MVC Type Aliase
Type Aliase 去掉Scala的糖衣(4) -- Type Aliase 我的新博客地址:http://cuipengfei.me/blog/2013/12/23/desugar-scala- ...
- 教你用shell写CGI程序
以前用shell写过一些cgi的例子.今天向大家介绍一下. CGI是一种接口的标准,并不区分编程语言,也就是说,CGI可以用任何一种语言编写,只要这种语言具有标准输入.输出和环境变量.CGI会将标准输 ...
- oracle中sys和System的默认密码
sys:change_on_install system:oracle 如果用pl/sql登录的话,记得在下面用户权限选项选择sysdba,如图所示:

