基于Java Servlet编写用户登陆,实现功能,不能通过输入main.html直接跳转

@WebServlet(value = "*.category")
public class CategoryServlet extends HttpServlet {
    CategoryService categoryService = new CategoryServiceImpl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("html/text");
        String path = req.getServletPath();
        switch (path) {
        
            case "/selectByPage.category":
                selectByPage(req, resp);
                break;
         
        }

    }


    //分页查询
    protected void selectByPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       Object object=req.getSession().getAttribute("manager");
        if (object == null) {
            resp.getWriter().print("null");
            return;
        }
        String pageNo = req.getParameter("pageNo");
        String likeValue = req.getParameter("likeValue");

        PageModel pageModel = new PageModel();
        pageModel.setPageNo(Integer.parseInt(pageNo));
        pageModel.setLikeValue(likeValue);
        List<Category> categories = categoryService.selectByPage(pageModel);
        pageModel.setModelList(categories);

        String jsonStr = JSONObject.toJSONString(pageModel);
        resp.getWriter().print(jsonStr);
    }

  }

代码解析:

以上代码是一个基于Java Servlet的简单示例,它展示了如何使用Servlet处理HTTP请求,并根据请求路径(path)执行相应的业务逻辑。让我逐步解释这段代码的功能和结构。

@WebServlet注解:

java

@WebServlet(value = "*.category")
public class CategoryServlet extends HttpServlet {
    // Class implementation
}


@WebServlet(value = "*.category") 注解指定了Servlet的映射路径,表示该Servlet会处理所有以 .category 结尾的URL请求。
CategoryServlet类:

继承自HttpServlet类,因此可以处理HTTP请求。
CategoryService初始化:

java

CategoryService categoryService = new CategoryServiceImpl();


CategoryService接口通过CategoryServiceImpl类实现,用于处理业务逻辑。
doGet和doPost方法:

doGet方法直接调用doPost方法,确保处理GET请求和POST请求的逻辑一致。
doPost方法:

java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("html/text");
    
    String path = req.getServletPath();
    switch (path) {
        case "/selectByPage.category":
            selectByPage(req, resp);
            break;
        // Add more cases for other paths if needed
    }
}


设置请求和响应的编码和内容类型为UTF-8。
通过req.getServletPath()获取请求的Servlet路径,然后使用switch语句根据路径执行相应的方法。
selectByPage方法:

protected void selectByPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    Object object = req.getSession().getAttribute("manager");
    if (object == null) {
        resp.getWriter().print("null");
        return;
    }
    
    String pageNo = req.getParameter("pageNo");
    String likeValue = req.getParameter("likeValue");

    PageModel pageModel = new PageModel();
    pageModel.setPageNo(Integer.parseInt(pageNo));
    pageModel.setLikeValue(likeValue);

    List<Category> categories = categoryService.selectByPage(pageModel);
    pageModel.setModelList(categories);

    String jsonStr = JSONObject.toJSONString(pageModel);
    resp.getWriter().print(jsonStr);
}


检查当前会话中是否存在名为"manager"的属性,如果不存在则返回字符串"null"。
从请求参数中获取pageNo(页码)和likeValue(模糊查询的条件值)。
创建一个PageModel对象,并设置页码和模糊查询条件。
调用categoryService的selectByPage方法,根据pageModel进行分页查询,获取Category对象的列表。
将查询结果设置回pageModel中。
使用JSONObject.toJSONString()方法将pageModel对象转换为JSON字符串。
将JSON字符串作为响应内容返回给客户端。
总结:以上代码演示了一个简单的Servlet类,根据不同的请求路径执行不同的业务逻辑(这里主要是分页查询),并将结果以JSON格式返回给客户端。这种方式适用于基于Java的Web应用程序中,用于处理前端页面的数据请求和响应。

以上代码是一个使用jQuery编写的JavaScript函数,主要实现了以下功能:

页面加载完成后执行函数:

javascript
$(function () { ... });


这段代码使用了jQuery的语法,表示在页面DOM加载完成后执行包裹的函数。

发起POST请求:

javascript
var url = "/fictionmanager/queryFullName.maneger";
$.post(url, function (data) { ... });


使用jQuery的$.post()方法向服务器发起POST请求,请求的URL为/fictionmanager/queryFullName.maneger。

处理服务器响应:

javascript

function (data) {
    if (data == "null") {
        window.location.href = "./login.html";
    } else {
        alert(data);
        if (data != null && data != "" && data != "null") {
            var jsonObj = JSON.parse(data);
            var fulltime = jsonObj.managerfullname;
            $("fullname").html(fulltime);
        } else {
            window.location.href = "./login.html";
        }
    }


}
当服务器返回数据后,会执行这个回调函数。首先检查data的值:

如果data等于字符串"null",则将页面重定向到./login.html,即跳转到登录页面。
否则,弹出一个包含服务器返回数据的警告框(用于调试或显示返回的数据),然后进一步检查data:
如果data不为null、空字符串和"null",则将data解析为JSON对象,并获取其中managerfullname字段的值,然后将这个值设置为页面中<fullname>元素的HTML内容。
如果data为空、为null或者为字符串"null",同样将页面重定向到./login.html,即跳转到登录页面。
总结:以上代码的主要目的是向服务器发起POST请求获取数据,根据返回的数据决定页面的跳转或者更新页面内容,通常用于页面初始化时进行用户登录状态的验证或者信息的展示。

知识点:

JSON(JavaScript Object Notation)

对象是一种轻量级的数据交换格式,它易于人类阅读和编写,同时也易于机器解析和生成。在JavaScript中,JSON对象是一种文本格式,用于表示结构化数据。它由键值对组成,键名使用双引号括起来,值可以是字符串、数字、布尔值、数组、对象或者null。

JSON对象的基本语法如下:

json
{
  "key1": "value1",
  "key2": 123,
  "key3": true,
  "key4": ["apple", "banana", "cherry"],
  "key5": {
    "nestedKey1": "nestedValue1",
    "nestedKey2": 456
  },
  "key6": null
}
在JavaScript中,可以使用JSON.parse()方法将JSON格式的字符串转换为JavaScript对象,例如:

javascript
var jsonString = '{"name": "John", "age": 30, "city": "New York"}';
var jsonObject = JSON.parse(jsonString);

console.log(jsonObject.name); // 输出: John
console.log(jsonObject.age);  // 输出: 30
console.log(jsonObject.city); // 输出: New York
反之,可以使用JSON.stringify()方法将JavaScript对象转换为JSON格式的字符串,例如:

javascript
var person = {name: "John", age: 30, city: "New York"};
var jsonString = JSON.stringify(person);

console.log(jsonString); // 输出: {"name":"John","age":30,"city":"New York"}
JSON在网络数据交换和前后端数据通信中广泛应用,因为它简单、通用且易于解析。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那我来给你提供一下JAVA代码实现的思路: 1. 首先,在login.jsp页面中,需要有一个表单,让用户输入账号和密码,然后将表单提交到服务器端进行验证。可以使用JSP和Servlet实现。 2. 在服务器端,可以使用Java Servlet技术来处理表单提交的数据,验证账号密码是否正确。如果正确,可以使用session来保存登录状态。 3. 在main.jsp页面中,可以使用session来验证用户是否已经登录。如果没有登录,就跳转到login.jsp页面。 4. 在main.jsp页面中,添加一个链接,链接到add.jsp页面。可以使用JSP标签来实现。 5. 在add.jsp页面中,同样需要验证用户是否已经登录。如果没有登录,就跳转到login.jsp页面。 6. 在add.jsp页面中,需要一个表单,用来输入订单id和商品名称。表单提交后,可以使用JSP和Servlet来处理数据,并将数据保存到数据库中。 7. 在add.jsp页面中,可以使用JSP标签来显示刚才添加的商品信息。 8. 最后,需要在Java代码中连接数据库,并编写相应的SQL语句来实现数据的存储和查询。 以上是基本的思路,需要具体实现的话,可以参考下面的代码: LoginServlet.java ```java @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); String password = req.getParameter("password"); if ("学号".equals(username) && "姓名全拼".equals(password)) { HttpSession session = req.getSession(); session.setAttribute("username", username); resp.sendRedirect("main.jsp"); } else { resp.sendRedirect("login.jsp?error=1"); } } } ``` Main.jsp ```java <% String username = (String) session.getAttribute("username"); if (username == null) { response.sendRedirect("login.jsp"); } %> <!DOCTYPE html> <html> <head> <title>Main</title> </head> <body> <h1>Welcome <%= username %></h1> <a href="add.jsp">Add Order</a> </body> </html> ``` Add.jsp ```java <% String username = (String) session.getAttribute("username"); if (username == null) { response.sendRedirect("login.jsp"); } %> <!DOCTYPE html> <html> <head> <title>Add Order</title> </head> <body> <h1>Add Order</h1> <form method="post" action="add"> <label for="orderId">Order ID:</label> <input type="text" name="orderId" id="orderId" required><br> <label for="productName">Product Name:</label> <input type="text" name="productName" id="productName" required><br> <input type="submit" value="Add"> </form> <% String orderId = request.getParameter("orderId"); String productName = request.getParameter("productName"); if (orderId != null && productName != null) { // connect to database and insert data out.println("Order ID: " + orderId + "<br>"); out.println("Product Name: " + productName); } %> </body> </html> ``` AddServlet.java ```java @WebServlet("/add") public class AddServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String orderId = req.getParameter("orderId"); String productName = req.getParameter("productName"); // connect to database and insert data resp.sendRedirect("add.jsp?orderId=" + orderId + "&productName=" + productName); } } ``` 注意:以上代码只是基本实现,具体的数据库连接和SQL语句需要根据实际情况来进行编写。同时,还需要处理一些异常情况,比如表单提交的数据为空等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值