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

首先申明上面的报错红叉,我也不知道怎么回事.总之能运行.
新建项目时选择java EE6.0,低版本没有servlet3.0.
先看一个基本示例.
Test.java是用来测试无需配置文件,无需静态页面(jsp,html)
直接访问servlet来从服务器上获取信息.
Test.java代码
package com.gys; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet(
name="Test",
urlPatterns={"/test"}
) public class Test extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println("<h1>思思博士</h1>");
}
}
访问结果:

看懂上面的name和urlpattern参数的,继续往下看.
servletConfigDemo.java代码
package com.gys; import java.io.IOException;
import java.util.Enumeration; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; @WebServlet(
urlPatterns={"/servletConfigDemo.do"},
loadOnStartup=1,
name="servletConfigDemo",
displayName="demo",
initParams={
@WebInitParam(name="success",value="success.html"),
@WebInitParam(name="error",value="error.html")
}
)
public class servletConfigDemo extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletConfig config=getServletConfig();
//1.getInitParameter(name)方法
String success=config.getInitParameter("success");
String error=config.getInitParameter("error"); System.out.println("success-----"+success);
System.out.println("errror------"+error); //2.getInitParameterNames方法
Enumeration enumeration=config.getInitParameterNames();
while(enumeration.hasMoreElements()){
String name=(String)enumeration.nextElement();
String value=config.getInitParameter(name);
System.out.println("name-----"+name);
System.out.println("value-----"+value);
} //3getServletContext方法
ServletContext servletContext=config.getServletContext();
System.out.println("servletContext----"+servletContext); //4.getServletName方法
String servletName=config.getServletName();
System.out.println("servletName------"+servletName); request.setCharacterEncoding("UTF-8");
String userId=request.getParameter("userId");
String passwd=request.getParameter("passwd"); //判断
if(userId!=null&&"gys".equals(userId)&&passwd!=null&&"gys".equals(passwd)){
HttpSession session=request.getSession();
session.setAttribute("user", userId);
//跳转
RequestDispatcher requestDispatcher=request.getRequestDispatcher(success);
requestDispatcher.forward(request, response);
}
else {
//跳转
RequestDispatcher requestDispatcher=request.getRequestDispatcher(error);
requestDispatcher.forward(request, response);
} }
}
index.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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">
<html>
<head>
<base href="<%=basePath%>"> <title>登陆</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<form action="servletConfigDemo.do" method="post">
用户名<input type="text" value="" name="userId" /><br/>
密码:<input type="password" name="passwd" />
<input type="submit" value="提交" />
</form> </body>
</html>
实现登陆功能了
servlet 3.0无需配置web.xml,使用注入方式配置servlet实现登陆功能(服务器需要支持servlet3.0)的更多相关文章
- WebApplicationInitializer究 Spring 3.1之无web.xml式 基于代码配置的servlet3.0应用
		
本文转自http://hitmit1314.iteye.com/blog/1315816 大家应该都已经知道Spring 3.1对无web.xml式基于代码配置的servlet3.0应用.通过spri ...
 - Servlet的运行流程以及web.xml文件中的几种配置方式
		
Servlet的运行流程: 有俩种方式: 1.创建一个包,然后在包下创建一个class,class里面需要继承httpservlet,复写service方法------>配置web.xml文件: ...
 - SpringMVC4零配置--web.xml
		
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...
 - web.xml中servlet-mapping的配置
		
<servlet-mapping>元素在Servlet和URL样式之间定义一个映射.它包含了两个子元素<servlet- name>和<url-pattern>,& ...
 - SpringMVC(十四):SpringMVC 与表单提交(post/put/delete的用法);form属性设置encrypt='mutilpart/form-data'时,如何正确配置web.xml才能以put方式提交表单
		
SpringMVC 与表单提交(post/put/delete的用法) 为了迎合Restful风格,提供的接口可能会包含:put.delete提交方式.在springmvc中实现表单以put.dele ...
 - Servlet(九):web.xml文件和server.xml文件
		
Web.xml 文件使用总结:作用: 存储项目相关的配置信息,保护 Servlet.解耦一些数据对程序的依赖.使用位置: 每个 Web 项目中Tomcat 服务器中(在服务器目录 conf 目录中)区 ...
 - SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
		
配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter ...
 - 如何把web.xml中的context-param、Servlet、Listener和Filter定义添加到SpringBoot中
		
把传统的web项目迁移到SpringBoot中,少不了web.xml中的context-param.Servlet.Filter和Listener等定义的迁移. 对于Servlet.Filter和Li ...
 - 创建新的servlet一定要记得修改web..xml文件!!!
		
创建新的servlet一定要记得修改web..xml文件!!!
 
随机推荐
- UVa 1210 连续素数之和
			
https://vjudge.net/problem/UVA-1210 题意: 输入整数n,有多少种方案可以把n写成若干个连续素数之和? 思路: 先素数打表,然后求个前缀和. #include< ...
 - 解决 vim 乱码
			
打开vim安装目录下的_vimrc,在头部加上几句配置语句就能搞定: //设置默认编码 set encoding=utf-8 set fileencodings=utf-8,chinese,latin ...
 - Git入门及常用命令(1)(window环境下)
			
文章参考摘抄自:git教程 1.git的安装 Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样.Cygwin的安装和配置都比较复杂,就不建议你折腾了 ...
 - MaintainableCSS 《可维护性 CSS》 --- 模板篇
			
什么是模块(Modules) ? 模块是一个特别的独立单元,可以与其他模块组合以形成更复杂的结构. 在客厅里,我们可以认为电视,沙发和墙艺术是模块.它们聚在一起创造一个可用的房间. 如果我们把其中一个 ...
 - Angular2 表单验证相关
			
angular4响应式表单与校验http://blog.csdn.net/xiagh/article/details/78360845?locationNum=10&fps=1 How to ...
 - webpack+angular2开发环境搭建
			
升级版之webpack4 + angular5脚手架demo详见: http://www.cnblogs.com/xudengwei/p/8852257.html 刚搭建完一个webpack+angu ...
 - JPA使用指南 javax.persistence的注解配置
			
@SuppressWarnings("serial") @Entity @Table(name="T_X") public class X implements ...
 - hdu 6144 Arithmetic of Bomb
			
Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
 - C++设计模式之享元模式
			
概述 想想我们编辑文档用的wps,文档里文字很多都是重复的,我们不可能为每一个出现的汉字都创建独立的空间,这样代价太大,最好的办法就是共享其中相同的部分,使得需要创建的对象降到最小,这个就是享元模式的 ...
 - 201621123006 《Java程序设计》第12周学习总结
			
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. InputStream的子类: OutputStream的子类: Reader的子类: Writer的子类: ...