JavaWeb_通过xml配置文件配置servlet访问路径
Servlet两种访问路径
一、在Servlet类中通过设置@WebServlet标注访问
二、在web.xml中编写配置文件
第一种能比较直观看到Servlet路径,但当项目发布后不好再对Servlet路径进行修改
第二种把Servlet路径在web.xml中配置, 能更好对Servlet路径进行配置的修改
利用Servlet处理注册登录请求 传送门
项目结构
package com.Gary.servlet; import java.io.IOException; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.Gary.model.User;
import com.Gary.util.DBUtil; @WebServlet("/login_do")
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password"); User user = DBUtil.verifyAccount(username,password);
if(user==null){
// out.println("登录失败,用户名或密码错误");
request.setAttribute("message","登录失败,用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
// out.println("登录成功");
int number = 0;
//获取到application对象
ServletContext application = this.getServletContext();
//第一次登录用户时if不瞒住,number=0
if(application.getAttribute("userNumber")!=null){
number = (Integer)application.getAttribute("userNumber");
} //登录过一个用户后在原基础number上进行++
number++; application.setAttribute("userNumber",number); //通过seesion的setAttribute传递数据
request.getSession().setAttribute("user", user);
//登录请求的转发,将数据传递给personCenter.jsp页面
request.getRequestDispatcher("personCenter.jsp").forward(request,response);
}
} }
LoginServlet.java
package com.Gary.servlet; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.Gary.util.DBUtil; //@WebServlet("/register_do")
public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
int age = Integer.parseInt(request.getParameter("age"));
String sex = request.getParameter("sex"); boolean isSuccess = DBUtil.addUser(username,password,age,sex); //使用请求转发
if(isSuccess){
request.setAttribute("message", "注册成功,请登录");
//通过getRequestDispatcher传递路径将请求转发给login.jsp
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
request.setAttribute("message", "注册失败,用户名重复");
//通过getRequestDispatcher传递路径将请求转发给login.jsp
request.getRequestDispatcher("register.jsp").forward(request,response);
} } }
RegisterServlet.java
<%@page import="com.Gary.model.User"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
Object o = session.getAttribute("user");
if(o!=null){
User user = (User)o;
out.println("当前登录用户:"+user.getUsername()+"<br/>");
}
%> <%
Object msg = request.getAttribute("message");
if(msg!=null)
out.println(msg);
%> 登录<hr>
<form action="login_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
<input type="submit" value="登录" />
</form>
</body>
</html>
login.jsp
<%@page import="com.Gary.model.User"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
Object o = session.getAttribute("user");
if(o!=null){
User user = (User)o;
out.println("当前登录用户:"+user.getUsername()+"<br/>");
}
%> <%
Object msg = request.getAttribute("message");
if(msg!=null)
out.println(msg);
%> <form action="register_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
年龄:<input type="text" name="age" /><br/>
性别: 男<input type="radio" name="sex" value="男" />女<input type="radio" name="sex" value="女" /><br/>
<input type="submit" value="注册" />
</form> </body>
</html>
register.jsp
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<!-- 配置servlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.Gary.servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.Gary.servlet.RegisterServlet</servlet-class>
</servlet> <!-- servlet路径映射 -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login_do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/register_do</url-pattern>
</servlet-mapping>
</web-app>
web.xml
LoginServlet.java处理login.jsp登录表单的请求
RegisterServlet.java处理register.jsp注册表单的请求
第一种
通过在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息,@WebServlet告诉容器,如果请求的URL是"/xxxxxx"
LoginServlet.java中配置的路径是login_do,在register.jsp的from表单中设置action也为login_do
由LoginServlet.java处理register.jsp的from表单提交的信息
@WebServlet("/login_do")
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = DBUtil.verifyAccount(username,password);
if(user==null){
// out.println("登录失败,用户名或密码错误");
request.setAttribute("message","登录失败,用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
// out.println("登录成功");
int number = 0;
//获取到application对象
ServletContext application = this.getServletContext();
//第一次登录用户时if不瞒住,number=0
if(application.getAttribute("userNumber")!=null){
number = (Integer)application.getAttribute("userNumber");
} //登录过一个用户后在原基础number上进行++
number++; application.setAttribute("userNumber",number); //通过seesion的setAttribute传递数据
request.getSession().setAttribute("user", user);
//登录请求的转发,将数据传递给personCenter.jsp页面
request.getRequestDispatcher("personCenter.jsp").forward(request,response);
}
} }
<form action="login_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
<input type="submit" value="登录" />
</form>
第二种
通过web.xml配置文件进行配置
<servlet-name>中填写项目中Servlet名字 【可随便填写,用作后边<servlet-mapping>映射url】
<servlet-class>中填写项目中该Servlet路径
<servlet-mapping>配置servlet-name和<url-pattern>地址映射
<!-- 配置servlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.Gary.servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.Gary.servlet.RegisterServlet</servlet-class>
</servlet> <!-- servlet路径映射 -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login_do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/register_do</url-pattern>
</servlet-mapping>
将com.Gary.servlet.LoginServlet路径上的Servlet命名为LoginServlet,与后边<servlet-mapping>中的<servlet-name>LoginServlet相匹配
【按住Ctrl+鼠标左键点击<servlet-class>下的路径可直接访问对应Servlet下的路径】
JavaWeb_通过xml配置文件配置servlet访问路径的更多相关文章
- Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求
Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...
- ssh2的application.xml配置文件配置详解
ssh2的application.xml配置文件配置详解 1.导入其他的配置文件.在ssh项目中可以导入其他的配置文件,导入的格式为: <import resource="clas ...
- 如何在.xml中配置Servlet信息
在编写好servlet文件后需要在web.xml文件下配置servlet,才能使servlet在服务器上运行.基本配置方式如下所示 <context-param> <param-na ...
- @WebFilter("")配置servlet访问出现404的原因
配置 servlet 一共有两种方式 直接在web.xml中配置name 和 url-parttern 使用注解配置servlet 使用注解的方式配置servlet是在servlet3.0之后新增的特 ...
- Tomcat下配置javaWeb访问路径-Linux
首先找到你的Tomcat的server.xml文件 笔者直接编辑 sudo vi /app/prod/conf/server.xml 访问只需要您的IP地址就可以访问项目了 第二个配置则是访问 ip+ ...
- 使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。
关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Applic ...
- spirng: srping mvc配置(访问路径配置)搭建SpringMVC——最小化配置
搭建SpringMVC——最小化配置 最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面. 随着网站开发的深入,开始学习servlet开发,记得最痛苦的就 ...
- servlet访问路径的写法
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- pom.xml配置文件配置jar(不用记,快速配置)
1:网址:http://mvnrepository.com/ 2:在搜索栏搜索要用的框架;例如spring *以下为示例
随机推荐
- JS获取url中的指定参数
function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new O ...
- 解决:IDE编译报错:Dangling metacharacter
Dangling metacharacter的意思是说:摇摆不定的元字符. 翻译成编程意思就是:当前字符计算有其它意思,并不能确定你到底用于什么意思.类似于中文的多义词. 如下图所示,当我们要分割字符 ...
- JsonObject、JsonArray操作json的个人总结
介绍 JsonObject.JsonArray之前,先介绍下JsonConfig JsonConfig: setClassMap(Map classMap)设置json属性类型,上json里的其中值为 ...
- 勒索病毒[recoverydata54@cock.li].harma,这样恢复文件。
还没有从搬新家的喜悦中恢复回来,突然有一天发现,自己的1T的硬盘的历史遗迹里面的文件都不能打开了.尤其是孩子们的珍贵照片. 这可让我着急了好几天.过了几天我才知道,原来是有天晚上,4周岁的儿子自己不知 ...
- 转换byte(十进制)为图形(大小写字母,符号)
/** * 转换byte(十进制)为字母 */ public static String ByteToLetter (byte[] chars) { String Letter = "&qu ...
- Array.reduce()方法
Array.reduce()方法是对数组的遍历,返回一个单个返回值 使用方法: Array.reduce((acc, cur, idx, src) => { }, initialValue) ...
- namenode datanode理解
HDFS是以NameNode和DataNode管理者和工作者模式运行的. NameNode管理着整个HDFS文件系统的元数据.从架构设计上看,元数据大致分成两个层次:Name ...
- Spark 2.43读取.json文件入库到MySQL 8
如果没有安装包,可以用我的这个 百度网盘链接点击进入 提取码: eku1 解压之后 准备开始配置环境变量 如果运行时候报错参考 (java.io.IOException: Could not loca ...
- 002-loganalyzer装完报错no syslog records found
1.登录mysql查看库Syslog中的表SystemEvents;是否有返回数据 # select * from Syslog.SystemEvents; #又返回数据说明rsyslog配置正确, ...
- particlesjs
今天发现一个粒子动画的插件下个笔记做个备用: <!DOCTYPE html> <html lang="en"> <head> <meta ...