博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMvc和servlet简单对比介绍
阅读量:5269 次
发布时间:2019-06-14

本文共 4595 字,大约阅读时间需要 15 分钟。

原文链接:http://www.cnblogs.com/haolnu/p/7294533.html

 

一、servlet实现登录。

咱们先来看一下servlet实现注册登录。

 

  • <servlet>  
  •      <servlet-name>LoginServlet</servlet-name>                                3
  •      <servlet-class>demo.servlet.LoginServlet</servlet-class>             4
  • </servlet>  
  • <servlet-mapping>  
  •      <servlet-name>LoginServlet</servlet-name>                                 2
  •      <url-pattern>login</url-pattern>                                                      1
  • </servlet-mapping>  

       访问顺序为1—>2—>3—>4,其中2和3的值必须相同。

url-pattern 标签中的值是要在浏览器地址栏中输入的 url,可以自己命名,这个 url 访问名为 servlet-name 中值的 servlet,两个 servlet-name 标签的值必须相同,因为通过 servlet 标签中的 servlet-name 标签映射到 servlet-class 标签中的值,最终访问 servlet-class 标签中的 class。

还有,web.xml 的 / 表示的是http://localhost:8080/ + 工程名。转自()

1、jsp页面

用户名:
密 码:

 

2、点击登录按钮后,提交表单,首先匹配web.xml中的路径,找到<url-pattern>值是login的sevlet,然后根据name去匹配servlet类,找到LoginServlet。

public class LoginServlet extends HttpServlet implements Servlet {      @Override      protected void doGet(HttpServletRequest request,              HttpServletResponse response) throws ServletException, IOException {          doPost(request, response);      }        @Override      protected void doPost(HttpServletRequest request,              HttpServletResponse response) throws ServletException, IOException {          String result = "";          // 获取用户名          String userName = request.getParameter("userName");                 // 获取密码          String passwd = request.getParameter("password");                      UserDao.SelectForLogin(userName, password); //数据中查找此人         request.getSession().setAttribute("userName", userName);          response.sendRedirect("login_success.jsp");       } }

 

3、然后再跳转到登陆成功页面

          
${userName } 欢迎您,登录成功!

 

但是总是需要手写跳转servlet,开发效率比较低,所以就涌现除了很多框架,比如struct2,spring等等。

 

二、springMVC

由于SpringMVC是方法级别的拦截,SpringMVC的方法之间基本上独立的,独享request response数据。它还可以和很多框架进行无缝集成,开发效率和性能高。现在很多公司都采用springMVC来进行开发,咱们公司也是采用springMVC来进行。下面我介绍一下springMVC如何实现注册登录。

1、jsp页面(登录)

 

用户名:

密    码:

 2、然后同样是匹配web.xml

spmvc
org.springframework.web.servlet.DispatcherServlet
1
spmvc
*.do

 上面这段xml的意思就是,所有的以.do结尾的action都让org.springframework.web.servlet.DispatcherServlet这个类来处理。load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。这时servlet不用初始化,而是交给容器去处理。

 

Spring主要也是通过DispatcherServlet实现了Servlet这个接口,又叫前端控制器,来自前端的请求会先到达这里,它负责到后台去匹配合适的handler。DispatcherServlet的主要工作流程如下:

前端请求到达DispatcherServlet。

前端控制器请求HandlerMappering 查找Handler。

如果查找到存在的处理器,进一步去调用service和dao层

返回结果再到controller层,渲染具体的视图,返回结果给页面。

3、然后加载sringMVC-servlet.xml配置文件。

 

4、然后开始扫描controller这个类,找到login.do。这时是通过注解来找到自己所需要的方法。

 
/** * 用户登录时,检查数据库中是否存在此人* * @param userName    输入的用户名* @param password    输入的用户密码* @param httpSession 设置session * @return 登陆成功返回登录成功,否则返回登录失败*/@RequestMapping("login.do") public String login(String userName, String password, HttpSession httpSession,HttpServletRequest request,HttpServletResponse resp) throws UnsupportedEncodingException {    User user = UserDao.SelectForLogin(userName, password); //数据中查找此人   Optional
userPresent = Optional.of(user); if (userPresent.isPresent()) {    Cookie cookie = new Cookie("nickName", URLEncoder.encode(user.getNickName(), "utf-8"));    cookie.setMaxAge(24 * 60 * 60 * 7);    resp.addCookie(cookie);    request.setAttribute("nickName",user.getNickName());    resp.setCharacterEncoding("utf-8");    LOGGER.info("数据库里有这个人"); return "welcome";  } else { LOGGER.info("数据库里没有这个人");  } return "loginerror";}
 

 

@RequestMapping("login.do") 这个注解是SpringMVC中的一个注解,该注解说明的是,对于login.do的请求,通过注解标签下面的方法进行响应。相当于方法的一个URL。

 

5、最后在返回登录成功界面

这时需要spring-servlet.xml里的视图解析器。

 

 

 

 

上面这段代码的意思是解析controller中方法返回的jsp页面,前缀加“/”表示webapp根目录,配置后缀“.jsp”表示自动在返回值后加.jsp后缀,这样就找到了webapp下的wecome.jsp。

 

 
  欢迎:${nickName}

通过EL表达式显示登录用户昵称。

至此springMVC登录功能就实现完成了。

 

spring框架已经是java web开发很主流的框架,这个框架有很多优点当然也有它的不足之处,比于之前的servlet,它一定程度上简化了开发人员的工作,使用servlet的话需要每个请求都去在web.xml中配置一个servlet节点,而Spring 中的DispatcherServlet他会拦截所有的请求,进一步去查找有没有合适的处理器,一个前端控制器就可以。

 

下面在介绍一下session和cookie的使用方法。

  1、session

 新建session,并添加参数。

 

HttpSession session = request.getSession(); session.setAttribute("nickName", value);
jsp页面获取session
${nickName}
过滤器获取session
 
String nickName = (String) session.getAttribute("nickName");

转载于:https://www.cnblogs.com/smfx1314/p/10198799.html

你可能感兴趣的文章
css3学习01
查看>>
【USACO】 奶牛会展
查看>>
继承和多态
查看>>
Dijkstra+计算几何 POJ 2502 Subway
查看>>
修复IE不能执行JS的方法
查看>>
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>