zoukankan      html  css  js  c++  java
  • JSP跳转到Servlet的两种配置

    一、servlet注解

    servlet3.0支持使用@WebServlet注解来实现JSP到servlet的跳转,此方法不需要配置项目中的web.xml文件。

    Test.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>TEST</title>
    </head>
    <body>
    <form action="TestServlet" method="post">
    <input type="text" name="text">
    <input type="submit">
    </form>
    </body>
    </html>

    TestServlet.java

    package test;
    
    import java.io.IOException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class TestServlet
     */
    @WebServlet("/TestServlet")
    public class TestServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        
        public GameDao() {
            super();
            
        }
    
        protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
            System.out.println(request.getParameter("text"));
            response.sendRedirect("Test.jsp");
        }
    
    }

     也可以使用@WebServlet提供更多信息,如以上的@WebServlet可以改为

    @WebServlet(
        name="testServlet",
        urlPatterns="/TestServlet",
        loadOnStartup=1 )

    上面的@WebServlet告知web容器:

    这个Servlet的名称是testServlet,这是由name属性指定的(name属性如果没有指定则默认为Servlet类完整名称);

    如果客户端请求的URL是/TestServlet,则由具有testServlet名称的Servlet来处理,这是由urlpatterns属性来指定的;

    当应用程序启动后,事实上并没有创建所有的Servlet实例。容器会在首次请求需要某个Servlet服务时,才将对应的Servlet类实例化,进行初始化操作,然后在处理请求。这意味着第一次请求该Servle的客户端,必须等待Servlet类实例化,进行初始动作所必须花费时间,才真正得到请求的处理。

    如果希望应用程序启动时,就把Servlet类载入,实例化并做好初始化动作,可以使用loadOnStartup设置。设置大于0的值(默认值-1),表示启动应用程序后就要初始化Servlet(而不是实例化几个Servlet)。数字代表了Servlet的初始顺序,容器必须保证有较小数字的Servlet先初始化,在使用标注的情况下,如果有多个Servlet在设置loadOnStartup时使用了相同的数字,则容器实现厂商可以自行决定要如何载入哪个Servlet。

    二、配置web.xml

    适用范围广泛,可以更方便的修改地址映射,便于管理跳转地址等。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
      <display-name>跳转测试</display-name>
      <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>test.TestServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/TestServlet</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    web.xml配置详解:https://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html

    <servlet>标签里的<servlet-name>标签表示的是自定义的一个servlet名,叫啥都行,只要和下边的<servlet-mapping>标签里的<servlet-name>标签一致就行。

    <servlet>标签里的<servlet-class>标签里需要填写的是servlet的本地位置,比如这里的test.TestServlet表示的就是下边对应网址需要使用的类为TestServlet,而这个servlet类在test包内。

    <servlet-mapping>标签里的<url-pattern>标签表示的是需要拦截的网址,比如这里的/TestServlet表示的就是拦截http://127.0.0.1:8080/Test/TestServlet这个网址。只要跳转到这个网址,服务器就会拦截请求,将请求发送给上边配置的servlet。

  • 相关阅读:
    html 问题
    bookshelf
    requireJS 用法
    autoprefixer
    移动端 代码块
    D3 学习资源
    折线图
    iscroll 4 下拉 上拉 加载
    iscroll
    重金悬赏的微软:提交Win8漏洞以及发布Win8应用
  • 原文地址:https://www.cnblogs.com/dream0-0/p/11201424.html
Copyright © 2011-2022 走看看