###前提・実現したいこと
JNDIの設定法が良く分かりません。
Tomcatと繋ぎたいです。
jarはダウンロードしてきたのですが、
server.xmlとcontext.xmlに何を記入していいか
分かりません。
下記にソースを載せますので、アドバイス宜しくお願い致します。
###JSP
lobin.jsp
1<%@ page import="java.sql.*,javax.naming.*,javax.sql.*" 2 contentType="text/html; charset=utf-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<link rel="stylesheet" type="text/css" href="css/login.css"> 8 9<title>ログイン</title> 10</head> 11<body> 12 <form method="POST" action="loginservlet"> 13 <br> 14 <div> 15 ユーザ I D : <input type="text" name="userid" /> 16 </div> 17 <br> 18 <div> 19 パスワード : <input type="password" name="pass" /> 20 </div> 21 <br> 22 <div> 23 <button class="button" type="submit" style="float: left">ログイン</button> 24 <button class="button" type="reset">クリア</button> 25 </div> 26 27 28 </form> 29 <c:if test="${!empty requestScope['errorMessage']}"> 30 <div>${requestScope['errorMessage']}</div> 31 </c:if> 32</body>
###servlet
package
1 2import java.io.IOException; 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6 7import javax.naming.Context; 8import javax.naming.InitialContext; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.HttpSession; 15import javax.sql.DataSource; 16 17/** 18 * Servlet implementation class loginservlet 19 */ 20@WebServlet("/loginservlet") 21public class loginservlet extends HttpServlet { 22 private static final long serialVersionUID = 1L; 23 24 /** 25 * @see HttpServlet#HttpServlet() 26 */ 27 public loginservlet() { 28 super(); 29 // TODO Auto-generated constructor stub 30 } 31 32 /** 33 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 34 * response) 35 */ 36 protected void doGet(HttpServletRequest request, 37 HttpServletResponse response) throws ServletException, IOException { 38 // TODO Auto-generated method stub 39 } 40 41 /** 42 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 43 * response) 44 */ 45 protected void doPost(HttpServletRequest request, 46 HttpServletResponse response) throws ServletException, IOException { 47 // TODO Auto-generated method stub 48 Connection con = null; 49 PreparedStatement ps = null; 50 String sql = null; 51 ResultSet rs = null; 52 53 String userid = request.getParameter("userid"); 54 String pass = request.getParameter("pass"); 55 56 if (userid == null || userid.length() == 0) { 57 58 request.setAttribute("errorMessage", "ユーザ名が未入力です"); 59 60 this.getServletContext().getRequestDispatcher("/Login.jsp") 61 .forward(request, response); 62 } else if (pass == null || pass.length() == 0) { 63 64 request.setAttribute("errorMessage", "パスワードが未入力です"); 65 66 this.getServletContext().getRequestDispatcher("/Login.jsp") 67 .forward(request, response); 68 } else { 69 try { 70 71 Context initContext = new InitialContext(); 72 Context envContext = (Context) initContext 73 .lookup("java:comp/env/jdbc/Library"); 74 DataSource ds = (DataSource) envContext.lookup("jdbc/Library"); 75 con = ds.getConnection(); 76 77 sql = "SELECT * FROM user"; 78 79 ps = con.prepareStatement(sql); 80 81 rs = ps.executeQuery(); 82 83 boolean userResult = false; 84 boolean ad = false; 85 while (rs.next()) { 86 87 String dbuserid = rs.getString("user_id"); 88 String dbpassword = rs.getString("password"); 89 90 if (dbuserid.equals(userid) && dbpassword.equals(pass)) { 91 userResult = true; 92 /* 93 * if ("管理者".equals(rs.getString("admin"))) { ad = true; 94 * } 95 */ 96 97 } 98 } 99 100 if (userResult) { 101 102 HttpSession session = request.getSession(); 103 104 session.setAttribute("userResult", userResult); 105 session.setAttribute("admin", ad); 106 107 this.getServletContext().getRequestDispatcher("/a.jsp") 108 .forward(request, response); 109 } else { 110 111 request.setAttribute("errorMessage", "ユーザ名またはパスワードが違います"); 112 113 this.getServletContext().getRequestDispatcher("/Login.jsp") 114 .forward(request, response); 115 } 116 } catch (Exception e) { 117 118 request.setAttribute("errorMessage", "システムエラーが発生しました。"); 119 120 this.getServletContext().getRequestDispatcher("/Login.jsp") 121 .forward(request, response); 122 123 throw new ServletException(e); 124 } finally { 125 try { 126 if (rs != null) { 127 rs.close(); 128 } 129 if (ps != null) { 130 ps.close(); 131 } 132 if (con != null) { 133 con.close(); 134 } 135 } catch (Exception e) { 136 } 137 } 138 } 139 140 } 141 142} 143
###context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <!-- Default set of monitored resources. If one of these changes, the --> <!-- web application will be reloaded. --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <Resource name="jdbc/Library" auth="Container" type="javax.sql.DataSource" user="root" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/Library? useUnicode=true&characterEncoding=utf-8" maxActiv="4" maxIdle="10" maxWait="5000" validationQuery="SELECT count(*) FROM user" /> </Context>
###server.xml
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!-- Security listener. Documentation at /docs/config/listeners.html <Listener className="org.apache.catalina.security.SecurityListener" /> --> <!--APR library loader. Documentation at /docs/apr.html --> <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener" /> <!-- Prevent memory leaks due to use of particular java/javax APIs --> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <!-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html --> <GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" /> </GlobalNamingResources> <Service name="Catalina"> <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" /> <Engine defaultHost="localhost" name="Catalina"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> </Realm> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt" /> <Context docBase="Library" path="/Library" reloadable="true" source="org.eclipse.jst.jee.server:Library" /> </Host> </Engine> </Service> </Server>
###試したこと
ネットなどを参照しながらやったのですが、
自分画無知すぎて出来ませんでした、、、
環境は
eclipce4.4
Tomcat8
mysql
回答1件
あなたの回答
tips
プレビュー