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. 两两内积为0(牛客多校第七场)-- CDMA

    题意: 构造一个n*n的矩阵,元素只能是-1或1,任意两行内积为0(两两相乘加起来和为0). 思路: #define IOS ios_base::sync_with_stdio(0); cin.tie ...

  2. 从入门到自闭之Python编码

    ascii码: 支持英文,数字,符号 1字节 不支持中文 gbk(国标) 支持英文,数字,符号 1字节 支持中文 2字节 unicode(万国码): 支持英文,数字,符号 4字节 支持欧洲 4字节 支 ...

  3. CSDN添加文章目录

    在发表的文章中,系统根据文章中H1到H6标签自动生成文章目录. 一.发表文章的时候合理使用“标题”标签. 二.目录生成.只要在文章中使用了“标题1”这样的功能,就可以在博文开头看到文章的目录.

  4. Redis之面试题总结

    缓存雪崩 缓存穿透 缓存与数据库双写一致 最后 随着系统访问量的提高,复杂度的提升,响应性能成为一个重点的关注点.而缓存的使用成为一个重点.redis 作为缓存中间件的一个佼佼者,成为了面试必问项目. ...

  5. centso 7 Keepalived 配置脚本

    #!/bin/bash #This is keepalived bashshell. #MASTER/BACKUP yum install -y openssl openssl-devel keepa ...

  6. 六,k8s集群service资源

    目录 Service简介 ClusterIP Headless(无头service) NodePort Service简介 service的基本说明: Service 是作用于客户端可服务端(Pod) ...

  7. linux 常用指令汇总

    新用户的一些操作: 查看当前用户:who am i(可以看到是否是伪终端)/也可以是whoami 添加用户:sudo adduser ..(用户名)..(此时创建的用户并未加入sudo组所以并不具有至 ...

  8. Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法

    在运行Ubuntu安装软件,使用命令sudo  apt-get install时,有时会出现以下的错误: E: Could not get lock /var/lib/dpkg/lock - open ...

  9. SQL函数取汉字拼音首字母

    )='') ) as begin ), ) , ,) if @chn > 'z' if( @chn < '八' ) set @c = 'A' else if ( @chn < '嚓' ...

  10. JULY-Record-update

    2019/07/26~2019/07/29,关于学习的一些记录 神经网络和深度学习neural networks and deep-learning-中文_ALL(1) 张景,逻辑派,组织派,行为主义 ...