Есть приложение, которое соединяется с бд через glassfish ресурсы и все работает. Используются servlet. Как это можно реализовать с использованием RESTful. Не понимаю что куда должно передаваться и как. Как REST принимает из формы и возвращает. Все что я находила было с возвращением статуса, а не ресурсов. Так же интересно как реализовать ввод логина и пароля и получать приветствие с именем пользователя, соответствующего этим логину и паролю в бд. Я совсем плаваю в этом.(
CRUD операции:
@Stateless
public class UserLogIn {
@PersistenceContext(unitName = "LEADER")
public EntityManager em;
public UserLogIn(){}
public void add(User user){
if (!user.getLogin().equals("") || !user.getPassword().equals("") || !user.getUsername().equals("")){
em.persist(user);
}
}
public void delete(int id){
em.remove(getUser(id));
}
public User getUser(int id){
return em.find(User.class, id);
}
public void update(User user){
em.merge(user);
}
public List
}
Сущность:
@Entity
@Table(name = "annusers")
@NamedQuery(name = "User.getAll", query = "SELECT u FROM User u")
public class User {
@Id
@SequenceGenerator(name="ad_point_gen",allocationSize=1,sequenceName="ad_points_id_ad_point_seq")
@GeneratedValue(generator="ad_point_gen",strategy=GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "login", nullable = false)
private String login;
@Column(name = "password", nullable = false)
private String password;
@Column(name="username", nullable = false)
private String username;
public User() {
}
public User(String login, String password, String username) {
this.login = login;
this.password = password;
this.username = username;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"login='" + login + '\'' +
", password='" + password + '\'' +
", username='" + username + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Классы сервлетов для работы с CRUD операциями
@WebServlet("/add")
public class AddAndEditUserServlet extends HttpServlet{
@EJB
private UserLogIn userLogIn;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
resp.setContentType("text/html");
req.setCharacterEncoding("UTF-8");
if(req.getParameter("edit")!=null){
int id = Integer.valueOf(req.getParameter("edit"));
User user = userLogIn.getUser(id);
req.setAttribute("user",user);
}
req.getRequestDispatcher("/add.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
resp.setContentType("text/html");
req.setCharacterEncoding("UTF-8");
String login = req.getParameter("login");
String password = req.getParameter("password");
String username = req.getParameter("username");
if(!req.getParameter("id").equals("")){
int id = Integer.valueOf(req.getParameter("id"));
User user = userLogIn.getUser(id);
user.setLogin(login);
user.setPassword(password);
user.setUsername(username);
userLogIn.update(user);
}else {
userLogIn.add(new User(login, password,username));
}
resp.sendRedirect("list");
}
}
package com.mkyong.rest.servlet;
@WebServlet("/delete")
public class DeleteUser extends HttpServlet {
@EJB
private UserLogIn userLogIn;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if(req.getParameter("id") != null && req.getParameter("id") != ""){
int id = Integer.valueOf(req.getParameter("id"));
userLogIn.delete(id);
}
resp.sendRedirect("list");
}
}
@WebServlet("/list")
public class UserServlet extends HttpServlet{
@EJB
private UserLogIn userLogIn;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
List
}
Ответ
rest сервисы, как правило нужны для CRUD операций(создание, удаление, редактирование, удаление).например:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
List
для запроса /list делает из бд выборку всех пользователей и перенаправляет запрос в list.jsp, где отображается список пользователей.
Все что пришло от клиента, находится в объекте класса HttpServletRequest, например:
req.getParameter("id")
содержит http параметр id
Update.
Если делать именно рестовский сервис, то надо подключить библиотеку jackson для xml и GSON для json.в методе вместо resp.sendRedirect("list"); возвращаете свой объект, например:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
List
Комментариев нет:
Отправить комментарий