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. LOJ576 「LibreOJ NOI Round #2」签到游戏

    题目 先进行一个转化: 每次花费\(\gcd\limits_{i=l+1}^rB_i\)的代价,可以连\((l,r)\)这一条边. 然后我们需要求\(0\sim n\)的最小生成树. 根据Kruska ...

  2. 测试基础_<一>

    1: 过程决定质量, 测试过程贯穿整个软件开发声明周期; 2: 测试过程和开发过程在整个开发周期相辅相成; 3: 测试过程是对整个开发过程的验证, 二者互相依赖 4: 测试过程是整个测试活动中一个至关 ...

  3. windows下生成zlib1.dll

    一.原料: VC zlib-1.2.3-src.zip 二.解压zlib-1.2.3-src.zip,用VC打开工作空间 src/zlib/1.2.3/zlib-1.2.3/projects/visu ...

  4. Sklearn使用良心完整入门教程

    The complete .ipynb file can be download through my share in onedrive:https://1drv.ms/u/s!Al86h1dThX ...

  5. 105、Replicated Mode VS Global Mode (Swarm12)

    参考https://www.cnblogs.com/CloudMan6/p/8028712.html   Swarm 可以在 Service 创建和运行过程中灵活的通过 --replicas 调整容器 ...

  6. 平时工作使用到的idea快捷键或者技巧

    平时工作使用到的idea快捷键或者技巧 alt+enter 快速导入包 alt+insert 快速生成setter和getter ctrl+alt+l 格式化代码 /**然后回车 快速生成文档注释 a ...

  7. Freemarker生成word文档的时的一些&,>,<报错

    替换模板ftl中的内容的时候,一些特殊的字符需要转移,例如: &,<,> value为字符串 value.replace("&","& ...

  8. 搭建私有CA并基于OpenSSL实现双向身份认证

    0x00 前言 互联网上的Web应用由于用户数目广泛,都是采用单向身份认证的,只需要客户端验证服务端的身份.但如果是企业内部的应用对接,客户端数量有限,可能就会要求对客户端也做身份验证,这时就需要一个 ...

  9. CentOS7 SVN基本配置

    开机自启指令如下 systemctl enable svnserve.service 对应可执行脚本文件路径 vim /etc/sysconfig/svnserve 查看状态: ps -ef|grep ...

  10. RaspberryPi交叉编译环境配置-Ubuntu & wiringPi & Qt

    1.配置RaspberryPi交叉编译环境: 在开发RaspberryPi Zero的过程中,由于Zero板卡的CPU的处理性能比较弱,因此其编译的性能比较弱,需要将代码在PC电脑上交叉编译完成之后再 ...