servlet 3.0无需配置web.xml,使用注入方式配置servlet实现登陆功能(服务器需要支持servlet3.0)

首先申明上面的报错红叉,我也不知道怎么回事.总之能运行.

新建项目时选择java EE6.0,低版本没有servlet3.0.

先看一个基本示例.

Test.java是用来测试无需配置文件,无需静态页面(jsp,html)

直接访问servlet来从服务器上获取信息.

Test.java代码

 1 package com.gys;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 @WebServlet(
13             name="Test",
14             urlPatterns={"/test"}
15         )
16
17 public class Test extends HttpServlet{
18     @Override
19     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
20             throws ServletException, IOException {
21         doGet(req, resp);
22     }
23
24     @Override
25     protected void doGet(HttpServletRequest request, HttpServletResponse response)
26             throws ServletException, IOException {
27         response.setContentType("text/html;charset=utf-8");
28         PrintWriter out=response.getWriter();
29         out.println("<h1>思思博士</h1>");
30     }
31 }

访问结果:

看懂上面的name和urlpattern参数的,继续往下看.

servletConfigDemo.java代码

 1 package com.gys;
 2
 3 import java.io.IOException;
 4 import java.util.Enumeration;
 5
 6 import javax.servlet.RequestDispatcher;
 7 import javax.servlet.ServletConfig;
 8 import javax.servlet.ServletContext;
 9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebInitParam;
11 import javax.servlet.annotation.WebServlet;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import javax.servlet.http.HttpSession;
16
17 @WebServlet(
18         urlPatterns={"/servletConfigDemo.do"},
19         loadOnStartup=1,
20         name="servletConfigDemo",
21         displayName="demo",
22         initParams={
23                 @WebInitParam(name="success",value="success.html"),
24                 @WebInitParam(name="error",value="error.html")
25         }
26     )
27 public class servletConfigDemo extends HttpServlet{
28     @Override
29     protected void doPost(HttpServletRequest request, HttpServletResponse response)
30             throws ServletException, IOException {
31         ServletConfig config=getServletConfig();
32         //1.getInitParameter(name)方法
33         String success=config.getInitParameter("success");
34         String error=config.getInitParameter("error");
35
36         System.out.println("success-----"+success);
37         System.out.println("errror------"+error);
38
39         //2.getInitParameterNames方法
40         Enumeration enumeration=config.getInitParameterNames();
41         while(enumeration.hasMoreElements()){
42             String name=(String)enumeration.nextElement();
43             String value=config.getInitParameter(name);
44             System.out.println("name-----"+name);
45             System.out.println("value-----"+value);
46         }
47
48         //3getServletContext方法
49         ServletContext servletContext=config.getServletContext();
50         System.out.println("servletContext----"+servletContext);
51
52         //4.getServletName方法
53         String servletName=config.getServletName();
54         System.out.println("servletName------"+servletName);
55
56         request.setCharacterEncoding("UTF-8");
57         String userId=request.getParameter("userId");
58         String passwd=request.getParameter("passwd");
59
60         //判断
61         if(userId!=null&&"gys".equals(userId)&&passwd!=null&&"gys".equals(passwd)){
62             HttpSession session=request.getSession();
63             session.setAttribute("user", userId);
64             //跳转
65             RequestDispatcher requestDispatcher=request.getRequestDispatcher(success);
66             requestDispatcher.forward(request, response);
67         }
68         else {
69             //跳转
70             RequestDispatcher requestDispatcher=request.getRequestDispatcher(error);
71             requestDispatcher.forward(request, response);
72         }
73
74     }
75 }

index.jsp

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11
12     <title>登陆</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22
23   <body>
24   <form action="servletConfigDemo.do" method="post">
25        用户名<input type="text" value="" name="userId" /><br/>
26        密码:<input type="password" name="passwd" />
27        <input type="submit" value="提交" />
28   </form>
29
30   </body>
31 </html>

实现登陆功能了

时间: 2024-11-05 21:38:16

servlet 3.0无需配置web.xml,使用注入方式配置servlet实现登陆功能(服务器需要支持servlet3.0)的相关文章

web.xml 之contextParam,listener,filter,servlet的加载顺序

先以加载spring为例子看看加载顺序的作用: Spring加载可以利用ServletContextListener 实现,也可以采用load-on-startup Servlet 实现,但比如filter 需要用到 bean ,但加载顺序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null:所以,如果过滤器中要使用到 bean,此时就可以根据加载顺序listener>filter>servlet,将spring 的加载 改成 Listener的方式.

SpringMVC4零配置--web.xml

servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitializer:启动容器时负责加载相关配置 Java代码   package javax.servlet; import java.util.Set; public interface ServletContainerInitializer { public void onStartup(Set<Class

一个配置web.xml的编程方法

使用编程方法针对任何java/j2ee配置web.xml Introduction本文介绍了Java和J2EE项目使用任何一种编程方法的web.xml配置 Background作为一种传统的方法,Java和J2EE的Web应用中的任何servlet上下文和其他监听器的配置都是在web.xml文件中配置的.与此相反,Servlet 3引言旨在提供配置web.xml的条目的实用方法. 任何Servlet 3基于Web应用可以实现一个servletcontainerinitializer接口,该接口将

SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】

配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c

Servlet声明周期和部署web.xml

一.什么事Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页.Servlet下有一个实现类叫HttpServlet,一个普通的java如果继承了HttpServlet类,覆盖了它的doGet和doPost方法,那么这个普通类也可以叫做Servl

项目支持Servlet3.0的新特性

一.Servlet3.0介绍 Servlet3.0是Java EE6规范的一部分,Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程. 二.开发Servlet3.0程序的所需要的环境 开发Servlet3.0的程序需要一定的环境支持.MyEclipse10和Tomcat7都提供了对Java EE6规范的支持.Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK1.6以上的版本. 所以开

Spring事务Transaction配置的五种注入方式详解

Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ??? 总结如下: ??? Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. ???DataSou

servlet3.0以后无需在web.xml中配置servlet

//下面这句话代替了web.xml中对servlet的配置 @WebServlet("/Upload") public class Upload extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio

Servlet(五岁以下儿童)web.xml一些常用的配置

(1)lode-on-startup,这Servlet该项目启动时它将被称为(从主要的电话init办法,为了安全起见,一般不应为Servlet建立URL制图).一些数据通常被用作前处理,或使用多线程建立经常性的任务 <servlet><pre name="code" class="html"><span style="font-family:Arial, Helvetica, sans-serif;"> <