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访问路径的更多相关文章

  1. Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求

    Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...

  2. ssh2的application.xml配置文件配置详解

    ssh2的application.xml配置文件配置详解   1.导入其他的配置文件.在ssh项目中可以导入其他的配置文件,导入的格式为: <import resource="clas ...

  3. 如何在.xml中配置Servlet信息

    在编写好servlet文件后需要在web.xml文件下配置servlet,才能使servlet在服务器上运行.基本配置方式如下所示 <context-param> <param-na ...

  4. @WebFilter("")配置servlet访问出现404的原因

    配置 servlet 一共有两种方式 直接在web.xml中配置name 和 url-parttern 使用注解配置servlet 使用注解的方式配置servlet是在servlet3.0之后新增的特 ...

  5. Tomcat下配置javaWeb访问路径-Linux

    首先找到你的Tomcat的server.xml文件 笔者直接编辑 sudo vi /app/prod/conf/server.xml 访问只需要您的IP地址就可以访问项目了 第二个配置则是访问 ip+ ...

  6. 使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。

    关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Applic ...

  7. spirng: srping mvc配置(访问路径配置)搭建SpringMVC——最小化配置

    搭建SpringMVC——最小化配置 最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面. 随着网站开发的深入,开始学习servlet开发,记得最痛苦的就 ...

  8. servlet访问路径的写法

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...

  9. pom.xml配置文件配置jar(不用记,快速配置)

    1:网址:http://mvnrepository.com/ 2:在搜索栏搜索要用的框架;例如spring *以下为示例

随机推荐

  1. # 江西ccpc省赛-waves-(DP做法)

    江西ccpc省赛-waves-(DP做法) 题链:http://acm.hdu.edu.cn/showproblem.php?pid=6570 题意:给你长度为N,1≤N≤100000的一个数组,其中 ...

  2. 从多种角度看[BZOJ 1061] [NOI 2008]志愿者招募(费用流)

    从多种角度看[BZOJ 1061] [NOI 2008]志愿者招募(费用流) 题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运 ...

  3. BugkuCTF--never give up

    这道题还挺有意思的... http://123.206.87.240:8006/test/hello.php 查看元素,有个1p.html,访问. 还没看到网页元素就跳转了...抓包! 抓到了一堆东西 ...

  4. Laravel之杂记

    1.composer设置国内镜像加速 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 2 ...

  5. mongodb 添加用户

    use admindb.createUser({ user:"admin", pwd:"abc123456", roles:[{role:"root& ...

  6. python3.7环境下创建app,运行Django1.11版本项目报错SyntaxError: Generator expression must be parenthesized

    咳咳!!! 今天用命令行创建django项目中的app应用,出现了这样一个错误 这个错误在python3.6版本下安装运行django 1.11版本正常运行,但python3.7版本下运行django ...

  7. JAVA基础:接口

    接口声明: interface 接口名 实现接口: class 类名 implements 接口名 接口特点: 1. 接口中的成员变量默认都是public.static.final类型的,必须被显式初 ...

  8. certutil 命令配合PS反弹后门

    Certutil.exe是一个命令行程序,作为证书服务的一部分安装.您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书 ...

  9. 四、redis学习(案例)

    效果如下 注意:必须要开启redis服务器端 数据库 CREATE DATABASE heima; -- 创建数据库 USE heima; -- 使用数据库 CREATE TABLE province ...

  10. echarts-迁徙图地点图标颜色修改

    引用:https://gallery.echartsjs.com/editor.html?c=xLSy9AUmlA var uploadedDataURL = "/asset/get/s/d ...