2018/8/7 servlet

Servlet 在服务器运行java代码 只有用servletApi这个类才属于servlet 最大特点就是动态加载网页(而且是在java代码里写的),后面学习的jsp= servlet +html;

作用:他不处理逻辑关系,server来处理逻辑关系,它只用于调用哪一个实体的bear 把相应的数据转发到相应的界面

实现serlet两种方法:1. 实现接口servlet;
2.继承httpServlet 大部分网站用的http协议(比较常用)

解决乱码:
get提交方式:项目、tomcat、servlet类中请求的对象 request 的编码格式设置成UTF-8。
Post提交方式:servlet类中响应的对象response 编码格式设置为 UTF-8

在servlet中首先统一编码格式:
req.setCharacterEncoding(“utf-8”);
resp.setCharacterEncoding(“utf-8”);
resp.setContentType(“text/html;charset=utf-8”);
Tomcat目录下的sever文件中 :编码格式改成UTF-8

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8"/>

要把访问的url和服务器的servlet匹配上,必须在web.xml中建立联系:


FirstServlet

com.offf.cn.MyServlet


userName
root





FirstServlet

/MyServlet

/MyServlet这里是匹配的url,它还有其他几种方式:

1.全局匹配:/* 根目录下的所有文件都会直接匹配servlet
2.模糊: *.do 只要是.do结尾的都能匹配到
3./im/* 只要是im文件夹下的都能匹配
4.优先级:精确匹配 > /im/* > *.do
5./ 和 * 不能同时出现

Init()方法,是servlet初始化

ServletConfig 对象 用来获取servlet配置信息。

servlet 的init 的方式可以来设置servlet的配置信息(在web.xml里设置);

当我web容器在创建servlet时 ,自动会将我们设置的servlet信息封装到ServletConfig 里。

我们在调用servlet 的init()的方法时,就能获取到ServletConfig 里的配置信息。

注册功能的实现:
1.前端 jsp(注册界面)
2.后端 操作数据库的相应代码

数据库设计(需求)
1.注册的表(主键id,用户名,密码,昵称)

连接数据库:
package com.offf.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.offf.entity.User;

public class BaseDao {
Connection conn;
public Connection getConnection(){

try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shoppingku", "root", "123456");
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


return conn;

}

//增加
public int addUser(User user){
int num=-1;
try {
conn = getConnection();
String sql= “insert into user values(?,?)”;
PreparedStatement ps = conn.prepareStatement(sql);

    ps.setObject(1, user.getRname());
    ps.setObject(2, user.getRpwd());

 num = ps.executeUpdate();



} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}







return num;

}

public User yanzheng(User user){
User user2 = null;
try {
conn= getConnection();
String sql=”select * from user where rname=? and rpwd=?”;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, user.getRname());
ps.setObject(2, user.getRpwd());

    ResultSet rs = ps.executeQuery();
    if(rs.next()){
        user2 = new User();
        user2.setRname(rs.getString("rname"));
        user2.setRpwd(rs.getString("rpwd"));
    }



} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


return user2;

}

}

服务器连接前端,并作出相应:
package com.offf.server;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.offf.dao.BaseDao;
import com.offf.entity.User;

public class MyServlet extends HttpServlet {

/**
 * Constructor of the object.
 */
public MyServlet() {
    super();
}

/**
 * Destruction of the servlet. <br>
 */
public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
}

/**
 * The doGet method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        this.doPost(request, response);
}

/**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html");


    String rname = request.getParameter("userName");

    String rpwd = request.getParameter("userpassword");
   User user = new User();


   user.setRname(rname);
   user.setRpwd(rpwd);


   System.out.println(user);

   BaseDao baseDao = new BaseDao();

   PrintWriter out = response.getWriter();
   //
    User  user2 =    baseDao.yanzheng(user);
    if(user2 !=null){
        out.print("登陆成功");
         //
    }else{
        out.print("登陆失败");

    }





}



private int Number(String rid) {
    // TODO Auto-generated method stub
    return 0;
}

/**
 * Initialization of the servlet. <br>
 *
 * @throws ServletException if an error occurs
 */
public void init() throws ServletException {
    // Put your code here
}

}

猜你喜欢

转载自blog.csdn.net/weixin_42844971/article/details/81486426