韩顺平servlet笔记完整代码Word文件下载.docx
《韩顺平servlet笔记完整代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《韩顺平servlet笔记完整代码Word文件下载.docx(117页珍藏版)》请在冰豆网上搜索。
![韩顺平servlet笔记完整代码Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/31/7d6f4c78-0410-48f5-b516-62b31bb0c5cf/7d6f4c78-0410-48f5-b516-62b31bb0c5cf1.gif)
十二、tomcat配置59
如何修改tomcat端口59
如何设置虚拟目录60
如何给tomcat的管理员设置密码61
如何设置数据源和连接池62
附录63
Jcreator不能导入javax.servlet包问题63
本文数据库数据库64
本文Web.xml文件配置64
一、前序工作
Tomcat安装好后
再webapps文件夹下新建mywebsite,里面包括WEB-INF,在里面是classes,lib和web.xml文件。
Jcreator配置好jdk路径后servlet也需要导入,configure—>
options—>
jdkprofile,选中jdkvension,点edit—>
addaddachieve,选择tomcat里lib下的servlet-api,就ok了。
详细看附录。
二、Classes文件写一个Hello.java
写java文件
有三种方法:
/*使用实现servlet接口的方式开发(不全)
packagecom.tsinghua;
//一个自定义的包
importjavax.servlet.*;
importjava.io.*;
importjava.io.IoException;
publicclassHelloimplementsServlet{
//该函数用于初始化servlet(类似与构造函数)
//该函数只会被调用一次
publicvoidinit(ServletConfigparml)throwsServletException{
System.out.println("
initit"
);
}
publicServletConfiggetServletConfig(){
returnnull;
//这个函数用于处理业务逻辑
//程序员应该把业务逻辑代码写这里
//这个函数当用户每访问servlet时,都会被调用
//req:
用于获得客户端(浏览器)信息res:
用于向客户端(浏览器)返回信息
publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException{
serviceit"
//从res中得到printWriter
PrintWriterpw=res.getWriter();
pw.println("
hello,world"
publicvoiddestroy(){
}
//方法二,继承GenericServlet(不全)
importjavax.servlet.GenericServlet;
publicclassHelloGenenextendsGenericServlet{
//重写service方法
publicvoidservice(ServletRequestreq,ServletResponseres){
//返回hello,world
try{
hello,world,generc"
catch(Exceptionex){
ex.printStackTrace();
*/
//方法三,继承HttpServlet开发
importjavax.servlet.http.*;
publicclassHelloextendsHttpServlet{
//处理get请求
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres){
//业务逻辑
try
{
PrintWriterpw=res.getWriter();
hellohttp"
catch(Exceptionex){
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres){
this.doGet(req,res);
配置web.xml文件
这个web.xml文件可以从旁边文件夹里拷来,主要改写的部分如下
<
servlet>
<
servlet-name>
hello<
/servlet-name>
servlet-class>
com.tsinghua.Hello<
/servlet-class>
/servlet>
!
--DefinetheManagerServletMapping-->
servlet-mapping>
url-pattern>
/hello<
/url-pattern>
/servlet-mapping>
上网验证
先打开apache-tomcat-8.5.8\bin下的startup.bat,然后登陆下面地址,看manager里有没有mywebsite,若runing是true则ok
再登陆下面地址看看是否成功
显示了hello,成功了
三、写登陆界面
Login.java登陆界面
Welcome欢迎界面
LoginCl验证用户
登陆界面包含三个java文件,用sendRedirect进行跳转,其中还包括了html语言,表单知识,详细看下面
Login.java
/**
*@(#)Login.java
*
*@author
*@version1.002017/2/10
*/
//登陆界面
publicclassLoginextendsHttpServlet{
publicLogin(){
//处理get请求
//业务逻辑
try
{
//中文乱码解决方法
res.setContentType("
text/html;
charset=gbk"
//返回登陆界面
html>
"
body>
h1>
登陆界面<
/h1>
formaction=loginclmethod=post>
用户名:
inputtype=textname=usrname>
br>
密码:
inputtype=passwordname=passwd>
inputtype=submitvalue=loging>
/form>
/body>
/html>
LoginCl.java
//验证(登陆处理)
publicclassLoginClextendsHttpServlet{
publicLoginCl(){
//接受用户名和密码
Stringu=req.getParameter("
usrname"
Stringp=req.getParameter("
passwd"
//验证
if(u.equals("
sp"
)&
&
p.equals("
123"
)){
//合法
//跳转(welcome)
res.sendRedirect("
welcome"
}else{
//不合法
//跳转(回原界面)
res.sendRedirect("
login"
//写url
Welcome.java
*@(#)Welcome.java
//欢迎界面
publicclassWelcomeextendsHttpServlet{
publicWelcome(){
//输出weclcome
PrintWriterpw=res.getWriter();
pw.println("
再之前的web.xml文件里增加如下
login<
com.tsinghua.Login<
/login<
logincl<
com.tsinghua.LoginCl<
/logincl<
welcome<
com.tsinghua.Welcome<
/welcome<
登陆下面地址,看manager里有没有mywebsite,若runing是true则ok
四、同一用户的不同页面共享数据
用sendRedirct()方法实现
实现在welcome界面显示登录用户的姓名
以上三个java文件中LoginCl和Welcome文件进行修改
Welcome
实现在welcome界面显示登录用户的姓名和密码
LoginCl
结果图:
隐藏数据:
、
用隐藏表单实现
Session
Session:
浏览器访问服务器时,服务器内存为浏览器分配的空间。
名字String
值Object
用session防止用户非法登陆到某个页面,这里防止直接登陆欢迎界面
网页:
输入welcome重新跳回登入界面
正确输入后:
五、Servlet链接数据库
建数据库的表
Login
inputtype=passwordname=password>
inputtype=submitvalue=loginin>
importjava.sql.*;
Connectionct=null;
Statementsm=null;
ResultSetrs=null;
password"
//链接数据库,加载驱动
Class.forName("
com.mysql.jdbc.Driver"
//得到链接
ct=DriverManager.getConnection("
jdbc:
mysql:
//localhost:
3306/xcdb?
useUnicode=true&
characterEncoding=gbk"
"
root"
gu123"
//创建Statement
sm=ct.createStatement();
rs=sm.executeQuery("
select*fromuserwhereusername='
+u+"
'
andpassword='
+p+"
if(rs.next()){
//将验证成功的信息,写入session
//1表示得到session
HttpSessionhs=req.getSession(true);
//修改session的存在时间,设为20秒
hs.setMaxInactiveInterval(20);
//把信息放session
hs.setAttribute("
pass"
ok"
welcome?
uname="
upassword="
+p);
}finally{
try{
if(rs!
=null){
rs.close();
}
if(sm!
sm.close();
if(ct!
ct.close();
}
catch(Exceptionex){
ex.printStackTrace();
//得到session
HttpSessionhs=req.getSession(true);
Stringval=(String)hs.getAttribute("
//判断是否非法登陆
if(val==null){
try{
//非法登陆
res.sendRedirect("
}catch(Exceptionex){
ex.printStackTrace();